把自己哄清楚了
就什么都好了
|

林汉州win

园龄:5年9个月粉丝:0关注:1

group by 和聚合函数使用

group by 和聚合函数使用:每组返回一个统计值
partition by 和聚合函数使用:每组每行返回一个统计值,通常配合row_number排序函数使用

一、在group by后的结果集上使用聚合函数,会作用在分组下的所有记录上。
group by 还有一个隐藏的功能:去重(求和时需要特别注意,因此窗口函数不要和group by 搭配使用,会存在计算漏掉的情况。)
eg:
select v_number,sum(v_number) over(order null) from temp315 group by temp315
1 33
1 33
2 33
30 33
select v_number,sum(v_number) over(order null) from temp315
1 34
1 34
2 34
30 34
二、而如果在partition结果上聚合,千万注意聚合函数是逐条累计运行结果的!(如果想作用所有上求和,可以用(over order null));其中的逐条累计由over(order 字段)体现的。
select v_number,sum(v_number) over(order by v_number) from temp315
累加:相同的值一次全加上
1 2
1 2
2 4
30 34

不需要一次全加上,就用rowid唯一字段进行排序
select v_number,sum(v_number) over(order rowid) from temp315
1 1
1 2
2 4
30 34

总结:
窗口函数,逐条累计,若不需要逐条,可order by null;
窗口函数,相同值一次全加上,若不需要,可用order by rowid唯一限制;

本文作者:林汉州win

本文链接:https://www.cnblogs.com/win1998/p/16035254.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   林汉州win  阅读(1006)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开