group by 与 partion by 区别

group by是分组函数,partition by是分区函数

 

partition  by 关键字是分析性函数的一部分,它和聚合函数(如group by)不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,

partition  by 用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组。(没有指定时 即 row_number() over(order by))

partition by 与 group by不同之处在于前者返回的是分组里的每一条数据,并且可以对分组数据进行排序操作。后者只能返回聚合之后的组的数据统计值的记录。

 

 

group by是分组函数,partition by是分析函数(然后像sum()等是聚合函数);
在执行顺序上,对于group by而言
from > where > group by > having > order by
对于partition by而言,在执行完select之后,在所得结果集之上进行partition。
在group by后的结果集上使用聚合函数,会作用在分组下的所有记录上。而如果在partition结果上聚合,千万注意聚合函数是逐条累计运行结果的!
group by将分组记录汇总成一条记录,具有去重效果
partition by显示所有数据,不会去重

转自 https://blog.csdn.net/m0_46657040/article/details/108868206

 

 

 

 

 

 

 

 

 

 

posted @ 2021-12-30 22:44  Avicii_2018  阅读(2921)  评论(0编辑  收藏  举报