星空网 > 软件开发 > 数据库

SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用

           

SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用

 

            由于前一段时间胃痛,导致博客园博客都停更了一个月左右。近几天,胃病终于稍微有所好转,决定重新写博文。

            前几天,有个朋友刚好问到本人有关 SQL 语句,大致是原表有两列,分别为月份、月份销售额,而需要一条 SQL 语句实现统计出每个月份以及当前月以前月份销售额和。尼玛,感觉还是没有说清,下面用图表示。

 

          SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用

       

 SQL 测试表脚本  

    

DECLARE @Temp Table( ID INT, --- 月份 MoneyData Float --- 金额 )insert INTO @TEMPSELECT 1,100 UNION ALLSELECT 2,200 UNION ALLSELECT 3,300 UNION ALLSELECT 4,400 UNION ALLSELECT 5,500 UNION ALLSELECT 6,600 UNION ALLSELECT 7,600

 一 自连接

SELECT A.ID, SUM(B.MoneyData) FROM @Temp A INNER JOIN @Temp BON A.ID>=B.ID GROUP BY A.ID------ 重点在于 ON 条件,通过自连接 A.ID >= B.ID ,可获取所需数据,再通过GROUP BY 、SUM 即可统计求和

  

二 开窗函数

 

SELECT ID, MoneyData,  SUM(MoneyData) OVER( ) AS '总销售额',SUM(MoneyData) OVER( PARTITION BY ID ) AS '月销售额', SUM(MoneyData) OVER( ORDER BY ID ASC) AS '当月+当月前销售额' FROM @Temp---- 此处,使用开窗函数使用更为简单,不过,其中 SUM() OVER ( ORDER BY ID ASC ) 即可实现以上功能

  

SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用

 

关于,开窗函数的具体用法,可参考微软 MSDN 官方 API 文档,最后,推荐一本开窗函数书:基于 SQL SERVER 2012 窗口函数。

 

参考:https://msdn.microsoft.com/zh-cn/library/ms173454.aspx




原标题:SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

什么是英代:https://www.goluckyvip.com/tag/77387.html
三代之英指的是什么:https://www.goluckyvip.com/tag/77388.html
代英昌:https://www.goluckyvip.com/tag/77389.html
印尼市场:https://www.goluckyvip.com/tag/7739.html
英代是什么意思:https://www.goluckyvip.com/tag/77391.html
伸代外语:https://www.goluckyvip.com/tag/77392.html
船底顶攻略(船底顶最详细攻略):https://www.vstour.cn/a/411239.html
川藏线自驾游要怎么走才比较划算呢?:https://www.vstour.cn/a/411240.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流