sum over使用方法,以及与group by的差别

1、sum over使用方法

sum(col1) over(partition by col2 order by col3 )

以上的函数能够理解为:按col2 进行分组(partition ),每组以col3 进行排序(order),并进行连续加总(sum)

表a,内容例如以下:  
 B   C  D  
02 02 1  
02 03 2  
02 04 3  
02 05 4  
02 01 5  
02 06 6  
02 07 7  
02 03 5  
02 02 12  
02 01 2  
02 01 23  

运行:SELECT   b,   c,   d,   SUM(d)   OVER(PARTITION   BY   b,c   ORDER   BY   d)   e   FROM   a  

得到结果:

B   C   E  
02 01 2  
02 01 7  
02 01 30  
02 02 1  
02 02 13  
02 03 2  
02 03 7  
02 04 3  
02 05 4  
02 06 6  
02 07 7  

能够看到,E列的值是累加和。



2、与group by 的差别

相同的a表:select   b,c,sum(d)   e   from   a   group   by   b,c  

B   C   E  
02 01 30  
02 02 13  
02 03 7  
02 04 3  
02 05 4  
02 06 6  
02 07 7

差别非常明显。

原文地址:https://www.cnblogs.com/gccbuaa/p/6847225.html