powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Накопительный итог
18 сообщений из 18, страница 1 из 1
Накопительный итог
    #39610159
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Подскажите, есть таблица с коэффициентами. Нужно сначала упорядочить таблицу по коэффициентам от большего к меньшему (это легко делается в Access) и далее в следующем столбце нужно рассчитать накопительный итог. Где первая ячейка соответственно будет равна первой ячейке коэффициентов и далее прибавляем по 1 строке.

Изначальная таблица
Коэффициент578421963

Упорядоченная таблица
Коэффициент987654321

Накопительный итог
Коэффициент Накопительный итог99817724630535439342244145
...
Рейтинг: 0 / 0
Накопительный итог
    #39610164
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Im_Max,
Хранить в таблице вычисляемые значения есть не правильно, ваша "хотелка" элементарно реализуется в отчете(свойство сумма с накоплением) или чуть сложней в запросе(создается копия таблицы с сортировкой по убыванию и суммируются значения меньше содержащегося в текущей записи таблицы отсортированной по возрастанию (сортировка таблиц может быть противоположенной,в зависимости от желаемого результата)
...
Рейтинг: 0 / 0
Накопительный итог
    #39610165
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Мне этот столбец нужен дальше для вычислений. Потому вариант это сделать в отчете не устраивает.
Про второй вариант не совсем понял, можно чуточку подробнее?
...
Рейтинг: 0 / 0
Накопительный итог
    #39610166
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Im_Max,
Код: sql
1.
2.
3.
SELECT t.коэффициент,dsum("[коэффициент]","[Коэф]","[коэффициент]>=" & t.коэффициент) as [накопительный коэффициент]
FROM Коэф as t
ORDER BY t.коэффициент DESC;
...
Рейтинг: 0 / 0
Накопительный итог
    #39610175
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот как преобразил код запрос Access

Код: sql
1.
2.
3.
SELECT t.коэффициент, DSum("[коэффициент]","[Коэф]","[коэффициент]>=" & [t].[коэффициент]) AS [накопительный коэффициент]
FROM Коэф AS t
ORDER BY t.коэффициент DESC;



Ошибку выдает в итоге:

...
Рейтинг: 0 / 0
Накопительный итог
    #39610179
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправил синтаксис. Появился расчет. Строка в запросе выглядит так:

накопительный коэффициент: DSum("[коэффициент]";"[Коэф]";"[коэффициент]>=" & '[коэффициент]')

Но результат это сумма всех коэффициентов для каждой строки.
...
Рейтинг: 0 / 0
Накопительный итог
    #39610181
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Накопительный итог
    #39610191
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Im_Max,
можно пойти по другому пути. Циклом пройтись по таблице и обновлением проставить суммы
...
Рейтинг: 0 / 0
Накопительный итог
    #39610193
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tarasios,

В 90% я работаю в окне построителя запросов. Могу простые SQL написать.

Я так понял можно немного Dsum подправить, что бы все правильно работало?
...
Рейтинг: 0 / 0
Накопительный итог
    #39610200
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-прошу пардонить меня-все еще проще чем я написал(извиняюсь-не внимательно прочел)
-"выражение" в запросе не обязательно(введено чтоб было удобней проверить работу запроса)
-хранить поле накопление не следует-это избыточная информация(создайте функцию и используйте её для дальнейших вычислений. Про вычисляемые поля )
...
Рейтинг: 0 / 0
Накопительный итог
    #39610204
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку:
Код: vbnet
1.
DSum("[коэффициент]";"[Коэф]";"[коэффициент]>=" & '[коэффициент]')

Ваша ошибка-опострофы(их быть не должно)
...
Рейтинг: 0 / 0
Накопительный итог
    #39610210
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Про опострофы на этом форуме нашел это. ТАм похожая проблема была с синтаксисом. Как раз наоборот без них идет ошибка, о которой я писал выше. А с ними идет вычисление, просто ошибочное, нужен накопительный итог а не сумма по всем коэффициентам.
...
Рейтинг: 0 / 0
Накопительный итог
    #39610211
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuВдогонку:
Код: vbnet
1.
DSum("[коэффициент]";"[Коэф]";"[коэффициент]>=" & '[коэффициент]')

Ваша ошибка-опострофы(их быть не должно)
Буду завтра разбирать Ваши пример, большое спасибо, думаю должно все получиться
...
Рейтинг: 0 / 0
Накопительный итог
    #39610397
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Сделал все как в Вашем примере. Все равно выдает ошибку. Стал разбираться. Единственное отличие наших запросов в том что у Вас в примере коэффициент это Длинное целое, в своем посте я тоже для примера указал что коэффициент это длинное целое. На самом деле у меня коэффициенты это Двойное с плавающей точкой. Там достаточно маленькие значения с кучей знаков после запятой.
Так вот, я изменил в Вашей таблице формат данных Коэф на Двойное с плавающей точкой. Вставил туда значения из своей таблицы и запрос стал тоже выдавать ошибку. Получается Dsum не работает с "Двойное с плавающей точкой" ?
...
Рейтинг: 0 / 0
Накопительный итог
    #39610411
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе преобразовал в длинное целое. И тогда формула работает, только 1 осталось поправить.
Идет накопительный итог начиная с самого меньшего. А мне нужно наоборот, с самого большого.
Как сейчас
Коэфф Накопительный112336410515621728836945
Как нужно:
Коэфф Накопительный99817724630535439342244145
...
Рейтинг: 0 / 0
Накопительный итог
    #39610420
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все заработало. Только вот столкнулся с тем, что это ОЧЕНЬ долго работает. Настолько что это не возможно использовать.
В итоге все что я хотел сделать, это найти накопительный итог (он у меня привязан к товарам, может из-за них так долго стал работать). И при достижении этого итога определенного значения у меня товарам присваивается категория.

У товаров есть доля. Мне нужно упорядочить товары по убыванию этой доли, далее найти товар при котором накопительно доля составит 80% от общей доли по всем товарам. Это АВС анализ.
Так как накопительный итог для каждого товара считается очень долго, можно ли найти товар, на котором доля накопительно стала равна 80% от общей доли. Т.е. не рассчитывать доли для каждого товара, а найти именно пограничный товар, и соответственно все товары с долей выше найденного будут иметь одну категорию.
Это можно сделать в Access?
...
Рейтинг: 0 / 0
Накопительный итог
    #39610423
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
SELECT t1.Коэффициент, SUM(t2.Коэффициент) Сумма
FROM Коэффициенты t1, Коэффициенты t2
WHERE t1.Коэффициент <= t2.Коэффициент
GROUP BY t1.Коэффициент
...
Рейтинг: 0 / 0
Накопительный итог
    #39610893
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Im_MaxВсе заработало. Только вот столкнулся с тем, что это ОЧЕНЬ долго работает...
Доменные функции вообще не быстрые (на больших массивах данных это заметно ощущается), но они также легко заменяются на соответствующие подзапросы :)
Код: sql
1.
2.
3.
SELECT t.коэффициент,(select sum([коэффициент])from [Коэф] where [коэффициент]>=t.коэффициент) AS [накопительный итог]
FROM Коэф AS t
ORDER BY t.коэффициент DESC;
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Накопительный итог
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]