这听起来可能很愚蠢,但是我在Netezza的Group By的SQL代码遇到了麻烦,我似乎无法弄清楚。基本上,我正在做简单的总结,并试图将结果分组,这就是我遇到的问题。当前表如下:
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还是子查询?我希望能得到一些建议,以了解到底发生了什么以及什么是最佳的行动方案。
您想要简单的聚合而不是窗口函数:
select id, date, sum(daily_count) daily_count
from mytable
group by id, date
您似乎只想聚合:
select id, date, sum(count) as daily_count
from t
group by id, date;
我不确定您为什么在这里尝试使用窗口功能。