广告
返回顶部
首页 > 资讯 > 数据库 >mysql按照今年的每个月的月份分组,月份没数据的补0,(查询虚拟时间表)
  • 630
分享到

mysql按照今年的每个月的月份分组,月份没数据的补0,(查询虚拟时间表)

mysql 2023-08-30 13:08:56 630人浏览 八月长安
摘要

需求:统计今年的每个月的设备故障数,如果那个月没有需要补0。 比如,当前是7月,那就统计1月到7月的数据,如果当前是1月,那就统计1月的,如果是11月,那就统计1月到11月的。 直接对表分组的话,如果5月没有数据,是没有5月这个结果的,所以

需求:统计今年的每个月的设备故障数,如果那个月没有需要补0。
比如,当前是7月,那就统计1月到7月的数据,如果当前是1月,那就统计1月的,如果是11月,那就统计1月到11月的。
直接对表分组的话,如果5月没有数据,是没有5月这个结果的,所以需要创建虚拟时间表,然后对数据空的月份进行补0。

base_city 是随便一个表就行,只要保证里面的数据一定是大于12条的,这里用的是省市区基地址表

SELECT               monthTime as month,               MAX(alarmDeviceNum) alarmDeviceNum        FROM (            SELECT                monthTime,                alarmDeviceNum            FROM (                SELECT                    DATE_FORMAT(  @cdate := DATE_ADD( @cdate, INTERVAL - 1 MONTH ) , '%Y-%m' ) monthTime,                    0 AS alarmDeviceNum                FROM(                    SELECT                        @cdate := DATE_ADD( CURDATE(), INTERVAL 1 MONTH )                    FROM base_city LIMIT 12                    ) t1                ) t2            UNION ALL            SELECT                DATE_FORMAT( a.biz_time, '%Y-%m' ) monthTime,                COUNT(DISTINCT a.product_key) alarmDeviceNum            FROM                alarm_log a            WHERE 1=1                AND YEAR( a.biz_time)=YEAR( CURDATE())            GROUP BY DATE_FORMAT( a.biz_time, '%Y-%m' )            ) f        GROUP BY monthTime

在这里插入图片描述

来源地址:https://blog.csdn.net/aiguo94/article/details/128290935

您可能感兴趣的文档:

--结束END--

本文标题: mysql按照今年的每个月的月份分组,月份没数据的补0,(查询虚拟时间表)

本文链接: https://www.lsjlt.com/news/382913.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作