上一篇讲了用tableau的实现方法Tableau实现累加多少天求和rolling_sum()

这一篇写一下用SQL的方法实现.主要有两个方法:

方法一: 用开窗函数

要实现当前月份和之前2个月的数据相加,代码很简单,直接使用over函数和 rows between n preceding and n following

就可以了。

代码:

SELECT  [salesdate],[Region],sale,sum(sale)over(order by salesdate,region rows BETWEEN 2 preceding AND CURRENT ROW)--2 followingFROM [Rollingtest]where salesdate <'20190110'

效果:

如果要求移动平均,那就再除以对应的天数就可以了

方法二:用自相关

用这个方法跑起来速度相对比较慢,但是适合那些没有开窗函数的数据库,比如mysql旧版本之类的

代码:

 SELECT a.salesdate,sum(a.sales) sales
,(select sum(rs.sales) from #test1 rs
where rs.salesdate<=a.salesdate
)rollingsales
FROM #test1 a
group by a.salesdate
order by a.salesdate

效果:

SQL server求移动平均、rolling sum滚动前多少行求和相关推荐

  1. mysql union all sum_[数据库]SQL Server UNION ALL 结果 SUM函数造成精度丢失

    [数据库]SQL Server UNION ALL 结果 SUM函数造成精度丢失 0 2020-08-03 18:00:30 SQL Server 数据类型 使用场景: 在进行多维度汇总数据时,需要将 ...

  2. SQL server求百分比

    SQL server求百分比 select convert(decimal(18,0),(19.0/101.0)*100) as LT5--结果19 通过上面的语法可以将19/101的百分比算出 但是 ...

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

    由于前一段时间胃痛,导致博客园博客都停更了一个月左右.近几天,胃病终于稍微有所好转,决定重新写博文. 前几天,有个朋友刚好问到本人有关 SQL 语句,大致是原表有两列,分别为月份.月份销售额,而需要一 ...

  4. SQL Server 堆heap 非聚集索引 Nonclustered index 行号键查找RID loopup结合执行计划过程详解

    SQL Server 堆型数据与执行计划使用案例 索引的相关术语 1 堆(Heap)是一种没有指定排序的数据结构,通俗的理解堆就像是按照顺序排放的杂物.在数据库里也即是对应没有聚集索引. 2 聚集索引 ...

  5. sql显示前10行数据_SPL 简化 SQL 案例详解:计算各组前 N 行

    取出各组的前N行数据是较常见的运算,比如:每个月每种产品销量最高的五天是哪五天,每位员工涨薪最多的一次是哪次,高尔夫会员成绩最差的三次是哪三次,等等.在SQL中,这类运算要用窗口函数以及keep/to ...

  6. SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)...

    本文出处:http://www.cnblogs.com/wy123/p/6008477.html 关于统计信息对数据行数做预估,之前写过对非相关列(单独或者单独的索引列)进行预估时候的算法,参考这里. ...

  7. sql group by 取每组符合条件_SPL 简化 SQL 案例详解:计算各组前 N 行

    取出各组的前N行数据是较常见的运算,比如:每个月每种产品销量最高的五天是哪五天,每位员工涨薪最多的一次是哪次,高尔夫会员成绩最差的三次是哪三次,等等.在SQL中,这类运算要用窗口函数以及keep/to ...

  8. SQL Server高级查询之子查询(多行子查询)

    1.in关键字 多条子查询返回的结果可以是一条数据,因而单行子查询也是多行子查询的一种特殊情况,所以单行子查询的"="比较符可以替换为多行子查询的"in"比较符 ...

  9. 求杨辉三角的前n行数据_LeetCode算法第118题:杨辉三角

    题目描述: 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5输出:[ [1], [1,1], [1,2,1 ...

最新文章

  1. exchange 2010-诊断小工具简解
  2. ubuntu su进入root权限
  3. java log 封装_工具类之LogUtils
  4. MySQL 数据库 分页查询/聚合查询
  5. 初学者如何开发出高质量J2EE系统
  6. 用Gson实现json与对象、list集合之间的相互转化
  7. UIPickerView用法(左右比例,整体大小,字体大小)
  8. 与Claudia.js的作者Gojko Adzic谈论如何通过Claudia将Node.js微服务部署至AWS Lambda
  9. LaTeX 切换其它另外的期刊会议模板
  10. java 标题栏_如何更改java应用程序标题栏默认图标
  11. GNS3下载安装和使用、本地主机虚拟网卡消失解决方案以及环回网卡添加与测试
  12. 如何把linux 安装到u盘,利用U盘装CentOS 6.4和将CentOS 6.4安装到U盘
  13. 概率论和数理统计知识点汇总
  14. DllMain——DLL程序入口点函数
  15. https端口必须443吗
  16. 现身说法:37 岁老码农找工作
  17. 难以忽视的真相:谈及利润,iPhone‘独孤求败’
  18. 自然语言处理从零到入门 自然语言理解NLU
  19. 淘气的小丁-Ajax
  20. 传统大地测量数字考点

热门文章

  1. tnc_pib_tc
  2. ArcMap10.8 点云数据处理
  3. Netty网络编程(三):Channel详解
  4. DayDayUp:Markdown编辑器的简介、入门、使用方法(Markdown编辑器撰写博客)
  5. The JAVA_HOME environment variable is not defined correctly的解决方法
  6. C语言的历练打怪之路(2)
  7. Lua C API 的正确用法
  8. 海康摄像机视频rtsp转rtmp,windows下搭建nginx流媒体服务器,使用ffmpeg推流。
  9. SHARC音频DSP的算法详解(七)Reverb Delay混响和回声效果的实现及代码详解
  10. [BZOJ4808] 马(最大独立集,最大流)