前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql统计近6个月的数据,无数据的填充0

Mysql统计近6个月的数据,无数据的填充0

作者头像
一缕82年的清风
发布2022-01-10 10:30:46
1.2K0
发布2022-01-10 10:30:46
举报
文章被收录于专栏:lsqingfeng

之前写过一遍文章,记录了Mysql统计近30天的数据,无数据填0的方式。主要思路就是利用mysql中的函数,生成一列30天的日期格式的数据,在通过这张临时表的数据去左关联我们的业务数据,由于用的是左关联,所以30天的数据肯定是有的,和业务数据关联后,业务数据中没有该日期的数据,就会得到null的结果,我们在通过使用IFNULL函数,就实现了这个需求。原文地址: Mysql统计近30天的数据,无数据的填充0_lsqingfeng的博客-CSDN博客_mysql统计30天内的数据

而最近在做统计分析的时候,遇到了一个统计近6个月的数据需求。当时我这一看,这不是和我之前做的统计近30天的数据的需求差不多么,就准备照搬过来,但是却发现整体思路是一致的,但是生成这个近六个月的数据,有点不知所措。后来终于还是找到了解决方案,这里和大家分享一下。

核心思路还是要生成近6个月的月份数据。

代码语言:javascript
复制
SELECT
	date_format( @lastDay := last_day( date_add( @lastDay, INTERVAL 1 MONTH ) ), '%Y-%m' ) lastDays 
FROM
	( SELECT @lastDay := date_add( curdate( ), INTERVAL - 6 MONTH ) FROM mysql.help_topic LIMIT 6 ) a

得到的结果如下:

有了近6个月的数据,我们就可以进行业务数据的关联了。,整体思路和之前一样

代码语言:javascript
复制
select date_table.lastDays as monthValue,IFNULL(temp.count, 0 ) as eventCount from
            (
                SELECT
                    date_format(@lastDay := last_day( date_add(@lastDay,interval 1 month ) ) ,'%Y-%m'  ) lastDays
                from
                    (SELECT @lastDay := date_add(curdate(),interval -6 month) from mysql.help_topic limit 6) a ) date_table
                left join(
                select DATE_FORMAT(event.event_time,'%Y-%m') as monthValue, round(count(*)/10000,2) as count from tbl_province_event event GROUP BY DATE_FORMAT(event.event_time,'%Y-%m')
            )temp on temp.monthValue = date_table.lastDays

结果如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/01/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档