窗口函数是使用SQL查询和分析数据时常用的函数,其基本语法如下:
窗口函数over(partitionby组的列名order by排序的列名)。
其中窗口函数为专用窗口函数和聚合函数。
专用窗口函数有row_number (,rank )、dense_rank )等,很常用,但这里不太介绍。
此外,将聚合函数max ()、min ()、sum ()、count ()等用作窗口函数时,请注意以下事项:
(1)必须为聚合函数指定聚合的列名。
)2)如果聚合函数仅使用partition by而不使用order by,则聚合函数的计算按每个分区用所有数字进行计算;
)3)同时使用partition by和order by时,聚合函数的计算按行重叠。
以下员工薪金表Employee和sum (以函数为例:
idcompanySalary 1a 23412 a 3413 a 154 a 135 b 3516 b44 select id、company、salary、Sum(Salary ) over(partitionbycompany ) asallSalarary
很明显,idcompanysalaryallsalary 1a 234127102 a 34127103 a 1527104 a 1327105 b 3513956 b 44395在使用group by后对每个组进行sum计算,但在同一组中
选择id、Company、Salary、Sum(Salary ) over(partitionbycompany,order by Id ) as AccSalary from Employee此结果如下:
idcompanysalaryaccsalry 1a 234123412 a 34126823 a 1526974 a 1327105 b 3513516 b 44395计算此行中的上一个数据的聚合。 该计算方法适用于统计累积数据分析。