powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Набегающий итог
6 сообщений из 6, страница 1 из 1
Набегающий итог
    #40064107
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть довольно тривиальная задача.
Есть выборка в полями "дата", "группа", "сумма".
Нужно получить суммы с разбивкой по группе, а также для каждой группы определить дату, когда набегающая сумма превысит определенное значение.
Я точно видел эту задачу на форуме, но сейчас пересмотрел прикрепленный FAQ и не могу найти.
Не поделитесь ссылкой?
...
Рейтинг: 0 / 0
Набегающий итог
    #40064110
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Считаешь нарастающий итог, а потом уровнем выше аналитикой же считаешь минимальную дату, когда эта сумма превысила твое "определенное" значение.
...
Рейтинг: 0 / 0
Набегающий итог
    #40064121
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть просто таким образом?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select ...
max(case when RUN < 1000 when D end) over (partition by CUSTOMER_ID)
from (
select CAL.D                             as "D"
...
, case
    ...
  end * nvl(K.FACTOR,1)                  as "FEE"
, sum(case
    ...
  end * nvl(K.FACTOR,1))
  over (partition by S.CUSTOMER_ID order by S.CUSTOMER_ID, CAL.D, S.LOGIN)
                                         as "RUN"
...
)


Почему-то я думал, что должно быть сложнее.
...
Рейтинг: 0 / 0
Набегающий итог
    #40064123
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
То есть просто таким образом?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select ...
max(case when RUN < 1000 when D end) over (partition by CUSTOMER_ID)
from (
select CAL.D                             as "D"
...
, case
    ...
  end * nvl(K.FACTOR,1)                  as "FEE"
, sum(case
    ...
  end * nvl(K.FACTOR,1))
  over (partition by S.CUSTOMER_ID order by S.CUSTOMER_ID, CAL.D, S.LOGIN)
                                         as "RUN"
...
)


Почему-то я думал, что должно быть сложнее.
1. Ты вроде хотел дату, когда произошло превышение? Для этого нужен min от run > 1000.
2. Указанное поле в сортировке лишнее.
...
Рейтинг: 0 / 0
Набегающий итог
    #40064125
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно.
min(case when RUN > 1000 when D end) - так?
...
Рейтинг: 0 / 0
Набегающий итог
    #40064126
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Видится, что так.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Набегающий итог
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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