mysql中滑动聚合的示例分析
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要为大家展示了"mysql中滑动聚合的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"mysql中滑动聚合的示例分析"这篇文章吧。滑动聚合
千家信息网最后更新 2025年11月07日mysql中滑动聚合的示例分析
这篇文章主要为大家展示了"mysql中滑动聚合的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"mysql中滑动聚合的示例分析"这篇文章吧。
滑动聚合是按顺序对滑动窗口范围内的数据进行聚合的操作。下累积聚合不同,滑动聚合并不是统计开始计算的位置到当前位置的数据。
这里以统计最近三个月中员工第月订单情况为例来介绍滑动聚合。
滑动聚合和累积聚合解决方案的主要区别在于连接的条件不同。滑动聚合条件不再是b.ordermonth <= a.ordermonth,而应该是b.ordermonth大于前三个月的月份,并且小于当前月份。因此滑动聚合的解决方案的SQL语句如下
SELECT a.empid, DATE_FORMAT(a.ordermonth, '%Y-%m') AS ordermonth, a.qty AS thismonth, SUM(b.qty) AS total, CAST(AVG(b.qty) AS DECIMAL(5,2)) AS avgFROM emporders aINNER JOIN emporders b ON a.empid=b.empid AND b.ordermonth > DATE_ADD(a.ordermonth, INTERVAL -3 MONTH) AND b.ordermonth <= a.ordermonthWHERE DATE_FORMAT(a.ordermonth,'%Y')='2015' AND DATE_FORMAT(b.ordermonth,'%Y')='2015'GROUP BY a.empid,DATE_FORMAT(a.ordermonth, '%Y-%m'),a.qtyORDER BY a.empid,a.ordermonth
运行结果如下

该解决方案返回的是三个月为一个周期的滑动聚合,但是每个用户包含前两个月并且未满3个月的聚合。如果只希望返回满3个月的聚合,不返回未满3个月的聚合,可以使用HAVING过滤器进行过滤,过滤的条件为MIN(b.ordermonth)=DATE_ADD(a.ordermonth, INTERVAL -2 MONTH),例如
SELECT a.empid, a.ordermonth AS ordermonth, a.qty AS thismonth, SUM(b.qty) AS total, CAST(AVG(b.qty) AS DECIMAL(5,2)) AS avgFROM emporders aINNER JOIN emporders b ON a.empid=b.empid AND b.ordermonth > DATE_ADD(a.ordermonth, INTERVAL -3 MONTH) AND b.ordermonth <= a.ordermonthWHERE DATE_FORMAT(a.ordermonth,'%Y')='2015' AND DATE_FORMAT(b.ordermonth,'%Y')='2015' AND a.empid=1GROUP BY a.empid,DATE_FORMAT(a.ordermonth, '%Y-%m'),a.qtyHAVING MIN(b.ordermonth)=DATE_ADD(a.ordermonth, INTERVAL-2 MONTH)ORDER BY a.empid,a.ordermonth
运行结果如下

年初至今聚合和滑动聚合类似,不同的地方仅在于统计的仅为当前一年的聚合。唯一的区别体现在下限的开始位置上。在年初至今的问题中,下限为该年的第一天,而滑动聚合的下限为N个月的第一天。因此,年初至今的问题的解决方案如下图所示,得到的结果
SELECT a.empid, DATE_FORMAT(a.ordermonth, '%Y-%m') AS ordermonth, a.qty AS thismonth, SUM(b.qty) AS total, CAST(AVG(b.qty) AS DECIMAL(5,2)) AS avgFROM emporders aINNER JOIN emporders b ON a.empid=b.empid AND b.ordermonth >= DATE_FORMAT(a.ordermonth, '%Y-01-01') AND b.ordermonth <= a.ordermonth AND DATE_FORMAT(b.ordermonth,'%Y')='2015'GROUP BY a.empid,a.ordermonth,a.qtyORDER BY a.empid,a.ordermonth
运行结果如下
以上是"mysql中滑动聚合的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
方案
结果
解决方案
示例
分析
不同
三个
下限
位置
内容
条件
篇文章
统计
运行
数据
月份
问题
学习
帮助
两个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
2网络安全宣传周简报
延边创业软件开发有限公司地址
上海新致软件开发
虚拟网站服务器
最新数据库怎么筛选多次内容
安徽hpe刀片服务器价格
奇安信统一服务器安全系统
牛国影响力人物数据库
定制软件开发工程师待遇
自动生成json数据库
微软商店怎么连接国内服务器
我的世界多人服务器怎么弄出生地
柳林网络安全宣传
linq根据去重复数据库
gcbi数据库
童话网络安全手抄报视频画
铜陵互联网视频系统服务器
连云港网络安全方案
2020网络安全厂家排名
服务器宽带
华为全球网络安全高管
数据库系统三级结构图
重点就办公安全和网络安全
如何关闭数据库的进程mysql
期刊数据库是什么级别
ps4 我的世界服务器
人才数据库管理系统单机版
服务器被打ip怎么办
专业管理软件开发哪家公司好
软件开发与技术是关于什么