Mysql统计近30天的数据,无数据的填充0
Mysql统计近30天的数据,无数据的填充0。 这个应该是我们在做统计分析的时候,经常遇到的一个需求。
先说一般的实现方式,就是按照日期进行分组,但是这样会有一个问题,如果数据库表中有一天没有数据,那么是统计不出来结果的。类似下图
2020-01-01 10
2020-01-03 20
2020-01-04 4
这个时候,我们发现,2020-01-02 这一天是没有数据的,我们希望没有数据的这一天得到也能返回日期,而对应的数据是0,期望如下:
2020-01-01 10
2020-01-02 0
2020-01-03 20
2020-01-04 4
这时候,单单group by就没办法实现了。
那应该怎么办呢?
一般情况就是我们应该先获取一个日期的虚拟表,把这30天的时间都列出来,然后用这个日期虚拟表再去关联我们的业务表,关联没数据的值设置为空即可,那么怎么得到近30天的日期的,给出sql实现方式
SELECT@s := @s + 1 AS indexs,DATE_FORMAT( DATE( DATE_SUB( CURRENT_DATE, INTERVAL @s DAY ) ), '%Y-%m-%d' ) AS dates FROMmysql.help_topic,( SELECT @s := -1 ) temp #不想包含当天,@s:=0WHERE@s < 30 ORDER BYdates
运行得到的结果如下
当然可根据自己的需要进行排序,时间有了,接下来直接关联自己的业务表就可以了,给出demo:
SELECTdate_table.dates AS dateValue,IFNULL( temp.count, 0 ) AS count
FROM(SELECT@s := @s + 1 AS indexs,DATE_FORMAT( DATE( DATE_SUB( CURRENT_DATE, INTERVAL @s DAY ) ), '%Y-%m-%d' ) AS dates FROMmysql.help_topic,( SELECT @s := 0 ) temp WHERE@s < 30 ORDER BYdates ) date_tableLEFT JOIN (SELECT LEFT( create_time, 10 ) AS dateValue,count( * ) AS count FROMmonitor_log_record t1 WHEREt1.log_type = 1 AND t1.error_type = 1 AND t1.project_id = 1 GROUP BYLEFT ( create_time, 10 ) ) temp ON date_table.dates = temp.dateValue
ORDER BYdate_table.dates DESC
好了,记录一下,希望可以帮助到你。有帮助的话记得点赞收藏加关注,感谢!!
Mysql统计近30天的数据,无数据的填充0相关推荐
- MySQL查询近12个月数据,无则补0
查询近12个月数据,无则补0 select v.month,ifnull(b.count,0) count from (SELECT DATE_FORMAT(CURDATE(), '%Y-%m') A ...
- Mysql统计近6个月的数据,无数据的填充0
之前写过一遍文章,记录了Mysql统计近30天的数据,无数据填0的方式.主要思路就是利用mysql中的函数,生成一列30天的日期格式的数据,在通过这张临时表的数据去左关联我们的业务数据,由于用的是左关 ...
- mysql 计算近30天总金额_MySQL数分实战:咖啡店精细化运营
前期,我们已经对MySQL的增删改查.以及多种查询方式和窗口.视图进行了解学习.本次我们利用前期所积累的知识进行数据分析实战. 本次实战数据源来自: Supersetsuperset.workeri ...
- mysql统计近n天每天的数据量
第一步 查询近n天的日期(以查询最近七天为例) SELECT@s :=@s + 1 AS _index,DATE(DATE_SUB(CURRENT_DATE, INTERVAL @s DAY)) AS ...
- mysql 查询近几天的数据
前言 mysql 需求:查询近30天的文章 查询近30天的文章 SELECT * FROM article WHERE pubTime >= NOW( ) - INTERVAL 30 DAY 注 ...
- mysql 计算近30天总金额_电商网站销售数据分析(MYSQL)
1.背景及目的 数据来源于某CD电商网站的用户订单记录,共23570名用户.69659条数据. 通过分析数据,了解该网站的用户行为.忠诚度.生命周期价值等内容,为营销策略及方案提供一定的依据. 2.数 ...
- MySQL获取近12个月数据SQL
##获取近12个月数据 SELECT TYEAR,TMONTH,CONCAT(SUBSTRING(TYEAR,3),'/',TMONTH) AS T_TIME,MARKETNAME,SJJY_WGDL ...
- mysql 计算近30天总金额_mysql┃一条更新语句是怎么执行的???
本文共:3018字 预计阅读时间:8分钟 文章首发于我的微信公众号:哪儿来的moon,欢迎大家关注 mysql┃一条更新语句是怎么执行的??? 前言 通过上一篇文章的内容,大家已经对mysql的基本架 ...
- Mysql查询最近30天的数据(每天的业绩总和数据)
需求:查询最近30天每天的业绩总和(当天没有业绩的默认为0) 1.刚开始我的sql是这样写的: SELECT truncate(sum(af2.money),2) as m,DATE_FORMAT(a ...
最新文章
- android 没有 layout_above,在RelativeLayout布局中layout_above不起作用
- jquery操作checkbox最佳方法
- Kali渗透测试工具库(一)sprata--信息收集扫描爆破集成
- iOS中AutoLayout自动布局,自适应高度
- 今晚去参加了ZTE IP产品线的活动
- 学生选课系统代码--分析2需求分析
- UMLChina公众号文章精选(20220126更新精选)
- 百度地图点击地图获取地址
- matlab中如何定义局部变量,matlab局部变量定义 persistent
- 【NodeJS】Codecademy学习笔记
- PHP 版 微信小程序商城 源码和搭建
- 【逗老师带你学IT】PRTG安装教程-部署简单功能强大的监控软件
- 粒径测量中的D10 D50 D90的含义
- 一段话中手机号中间四位做特殊处理
- 【web项目】前端生日礼物--注册页面篇
- Java学习笔记:web2
- Caffe中均值文件的问题
- 好久没来写文章了 。到此一游
- 法医检验鉴定中心实验室建设思路
- Oracle Database 下载地址。无需要注册直接下载