Group By 的基本 SQL 问题(在 Netezza 中)
Basic SQL question for Group By (in Netezza)
这听起来可能很愚蠢,但我在 Netezza 中的 SQL Group By 代码遇到了问题,我似乎无法理解。基本上,我正在做简单的求和并试图对结果进行分组,这是我遇到问题的地方。当前 table 看起来像:
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声明是:
select id, date, sum(count) over (partition by date, id) as daily_count
如果我执行包含总和字段 (group by id, date, daily_count
) 的 group by
子句,我会收到警告说:
Windowed aggregates not allowed in a GROUP BY clause
但是,如果我在 group by
子句 (group by id, date
) 中排除总和字段,则会收到警告:
Attribute count
must be GROUPed or used in an aggregate function
count
是我要求和的变量,所以如果我对它进行分组,它不会产生正确的总和。
这是否意味着必须在此查询之外进行分组,即 cte 或子查询?我希望得到一些建议,以了解到底发生了什么以及最好的行动方案是什么。
您需要简单的聚合而不是 window 函数:
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;
我不确定你为什么要在这里使用 window 函数。
这听起来可能很愚蠢,但我在 Netezza 中的 SQL Group By 代码遇到了问题,我似乎无法理解。基本上,我正在做简单的求和并试图对结果进行分组,这是我遇到问题的地方。当前 table 看起来像:
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声明是:
select id, date, sum(count) over (partition by date, id) as daily_count
如果我执行包含总和字段 (group by id, date, daily_count
) 的 group by
子句,我会收到警告说:
Windowed aggregates not allowed in a GROUP BY clause
但是,如果我在 group by
子句 (group by id, date
) 中排除总和字段,则会收到警告:
Attribute
count
must be GROUPed or used in an aggregate function
count
是我要求和的变量,所以如果我对它进行分组,它不会产生正确的总和。
这是否意味着必须在此查询之外进行分组,即 cte 或子查询?我希望得到一些建议,以了解到底发生了什么以及最好的行动方案是什么。
您需要简单的聚合而不是 window 函数:
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;
我不确定你为什么要在这里使用 window 函数。