У меня есть набор данных, который имеет два уровня разбивки; пытаясь суммировать верхний уровень с помощью функции окна (кумулятивная сумма), но функции окна не группируют вывод в одну строку.Posgresql: возвращает одну строку с функцией окна
Данные выглядит следующим образом:
дате | верхний уровень a | a1 | название поля
дата | верхний уровень a | a2 | название поля
дата | верхний уровень b | b1 | название поля
дата | верхний уровень b | b2 | название поля
дата | верхний уровень b | b3 | поле для обобщения
Я делаю:
SUM(field_to_summarize) OVER (partition by top_level order by date) AS CumulativeSum
Это возвращает то же CumulativeSum за верхний уровень на каждой строке, как вы видите выше. Как мне выполнить агрегацию по окну, но возвращать только одну строку на верхний уровень? Например:
дата | верхний уровень a | Суммарная сумма для
дата | верхний уровень b | Суммарная сумма для b
Разве это не просто 'выберите top_level, сумма (field_to_summarize) форма my_table группы по заказу top_level по top_level'? Обратите внимание, что сумма суммарной суммы последней строки будет равна сумме всех значений вплоть до последней строки в подгруппе –
. Это работает, если мне нужна только единовременная общая сумма. Но мне нужно также группировать по дате, чтобы ежемесячно работать. Любые другие мысли? – user3208423
просто добавьте группу top_level – devanand