其中开窗函数的每个含义不同,我们来具体解读一下:
SUM(Salary) OVER (PARTITION BY Groupname)
只对PARTITION BY后面的列Groupname进行分组,分组后求解Salary的和。
SUM(Salary) OVER (PARTITION BY Groupname ORDER BY ID)
对PARTITION BY后面的列Groupname进行分组,然后按ORDER BY 后的ID进行排序,然后在组内对Salary进行累加处理。
SUM(Salary) OVER (ORDER BY ID)
只对ORDER BY 后的ID内容进行排序,对排完序后的Salary进行累加处理。
SUM(Salary) OVER ()
对Salary进行汇总处理
排序
ROW_NUMBER()
定义:ROW_NUMBER()函数作用就是将SELECT查询到的数据进行排序,每一条数据加一个序号
select * ,ROW_NUMBER() OVER (PARTITION BY ClassName ORDER BY SCORE DESC) 班内排序 ,ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS 总排序 from Scores ;
RANK()
select ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK] ,* from Scores ; select RANK() OVER (ORDER BY SCORE DESC) AS [RANK] ,* from Scores ;
NTILE()
定义:NTILE(N)函数是将数据分成N块,然后再添加1~N的序号。
select * ,NTILE(1) OVER (ORDER BY SCORE DESC) AS 分区后排序 from Scores ; select * ,NTILE(2) OVER (ORDER BY SCORE DESC) AS 分区后排序 from Scores ; select * ,NTILE(3) OVER (ORDER BY SCORE DESC) AS 分区后排序 from Scores ;
ROWS|RANGE
select * ,SUM(Salary) OVER(PARTITION BY groupname ORDER BY ID ROWS between CURRENT ROW and 5 FOLLOWING) 从当前行开始后5行的和 from Employee
参考
https://www.modb.pro/db/42912
总结
到此这篇关于SQL窗口函数OVER用法的文章就介绍到这了,更多相关SQL窗口函数OVER内容请搜索