Basi c SQL вопрос для группы By (в Netezza) - PullRequest
1 голос
/ 22 апреля 2020

Это может звучать глупо, но у меня возникают проблемы с моим SQL кодом для Group By в Netezza, который я не могу понять. По сути, я делаю простую сумму и пытаюсь сгруппировать результаты, где я сталкиваюсь с проблемами. Текущая таблица выглядит следующим образом:

id      date     daily_count
---------------------------
1      4/1/20        2
1      4/2/20        1
2      4/1/20        3
2      4/1/20        2
2      4/3/20        1 

Я хочу, чтобы она выглядела следующим образом:

id      date     daily_count
---------------------------
1      4/1/20        2
1      4/2/20        1
2      4/1/20        5
2      4/3/20        1 

Мой оператор выбора:

select id, date, sum(count) over (partition by date, id) as daily_count

Если я это сделаю group by предложение, включая поле суммы (group by id, date, daily_count), я получаю предупреждение:

Оконные агрегаты не разрешены в предложении GROUP BY

Но если я исключу сумму поле в group by предложении (group by id, date), затем я получаю предупреждение, говоря:

Атрибут count должен быть сгруппирован или использоваться в статистической функции

count - это переменная, которую я суммирую, поэтому, если я сгруппирую ее, она не даст правильную сумму суммы.

Означает ли это, что группировка должна происходить вне этого запроса, то есть cte или подзапрос? Я надеюсь получить несколько советов, чтобы знать, что именно происходит и как лучше поступить.

Ответы [ 2 ]

2 голосов
/ 22 апреля 2020

Вы, похоже, просто хотите агрегировать:

select id, date, sum(count) as daily_count
from t
group by id, date;

Я не уверен, почему вы пытаетесь использовать оконную функцию здесь.

2 голосов
/ 22 апреля 2020

Требуется простая агрегация, а не оконные функции:

select id, date, sum(daily_count) daily_count
from mytable
group by id, date
...