over partition by 和 group by 的区别

group by:对检索结果的保留行进行单纯分组,返回聚合之后的组的数据统计值的记录。划分为多组,每组返回一行。
partition by:返回分组里的每一条数据,在应用关联的开窗函数前确定行集的分区和排序,然后,开窗函数将计算窗口中的每一行的值。

例:
表中的数据如下
create temp table test as
select ‘A01’ as A,‘001’ as B,10 as C
union select ‘A01’, ‘001’, 20
union select ‘A02’, ‘002’, 20
;

A B C
A01 001 10
A01 001 20
A02 002 20

分别运行group by和partition by
SELECT A,B,MAX(C) OVER( PARTITION BY A,B)
FROM TEST
;
结果为

A B MAX
A01 001 20
A01 001 20
A02 002 20

SELECT A,B,MAX(C)
FROM TEST
GROUP BY 1,2
;
结果为

A B MAX
A01 001 20
A02 002 20

猜你喜欢

转载自blog.csdn.net/qq_15529837/article/details/88342206