数据库
首页 > 数据库> > SQL 开窗函数 OVER 的几种用法

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