SQL 开窗函数 OVER 的几种用法
作者:互联网
over()函数则是一个“开窗函数”,它更多的是与聚合函数如:sum()、max()、min()、avg()、count()等函数以及排名函数如:row_number()、rank()、dense_rank()、ntile()函数结合使用。
第一种:求占比
select 年份 , 月份 , 业绩 , 业绩/ SUM(业绩) OVER (PARTITION BY 年份) FROM TABLE
注:partition by A 是以A进行分组的意思
注意,这里业绩是已经聚合后的业绩,
自己尝试过
select 年份 , 月份 , sum(业绩) ,sum( 业绩)/ SUM(业绩) OVER (PARTITION BY 年份) FROM TABLE
这是不行的。
其实我想了想,
这和用 临时表 WITH T AS () 或者嵌套 (select sum()....) 不是一样效果吗?
好像有点不实用。
如果有人知道怎么做,欢迎在下面留言。
第二种:排序
select A ,SUM(B), RANK() OVER ( ORDER BY SUM(B)) from table
注:这里order by 不能之别用别名
第三种:求累计
SELECT 年份,月份 ,sum(业绩) OVER (ORDER BY 月份) a FROM T
注意:这里累计关键的因素是 order by
参考这里
https://www.cnblogs.com/mingdashu/p/12100734.html
标签:SUM,函数,sum,开窗,SQL,OVER,select,业绩 来源: https://www.cnblogs.com/pyuser12138/p/14436301.html