一、当天24小时没有补0

指的是从今天2021-01-07 00:00:00 到 2021-01-07 23:59:59
原始数据库表结构为:

SELECT a.hour HOUR, IFNULL(b.count, 0) COUNT FROM (SELECT 0 HOUR UNION ALL SELECT 1 HOUR UNION ALL SELECT 2 HOUR UNION ALL SELECT 3  HOUR UNION ALL SELECT 4 HOUR UNION ALL SELECT 5 HOUR UNION ALL SELECT 6 HOUR UNION ALL SELECT 7 HOUR UNION ALL SELECT 8 HOUR UNION ALL SELECT 9 HOUR UNION ALL SELECT 10 HOUR UNION ALL SELECT 11 HOUR UNION ALL SELECT 12 HOUR UNION ALL SELECT 13 HOUR UNION ALL SELECT 14 HOUR UNION ALL SELECT 15 HOUR UNION ALL SELECT 16 HOUR UNION ALL SELECT 17 HOUR UNION ALL SELECT 18 HOUR UNION ALL SELECT 19 HOUR UNION ALL SELECT 20 HOUR UNION ALL SELECT 21 HOUR UNION ALL SELECT 22 HOUR UNION ALL SELECT 23 HOUR) a LEFT JOIN(SELECTHOUR(visit_time)  HOUR,COUNT(visit_time) COUNTFROM t_testWHERE DATE_FORMAT(visit_time, '%Y-%m-%d') = CURRENT_DATEGROUP BY DATE_FORMAT(visit_time, '%Y%m%d-%H'), HOUR ) b ON a.hour=b.hour
ORDER BY HOUR

结果:

二、近24小时补0

指的是当前时间 2021-01-07 15:28:45 到 2022-01-06 16:28:45

SELECTt1. HOUR HOUR,COUNT(t2. HOUR) COUNT
FROM(SELECTDATE_FORMAT(@cdate := DATE_ADD(@cdate, INTERVAL - 1 HOUR),'%y-%m-%d %H') HOURFROM(SELECT@cdate := DATE_ADD(DATE_FORMAT(NOW(), '%y-%m-%d %H'),INTERVAL + 1 HOUR)FROMinformation_log) t0LIMIT 24) t1
LEFT JOIN (SELECTDATE_FORMAT(visit_time, '%y-%m-%d %H') HOURFROMinformation_logWHEREvisit_time >= (NOW() - INTERVAL 24 HOUR)
) t2 ON t1. HOUR = t2. HOUR
GROUP BYt1. HOUR
ORDER BYt1. HOUR DESC

结果:

扩展:

需求1:

按照天数统计每天的总数,如果其中有几天没有数据,那么group by 返回会忽略那几天,如何填充0?
若统计7天的数据,其中只有2022年12月28日有数据,这样返回,数据只有1个,不符合报表统计的需求。期望没有值填0

SQL:

SELECTt1.`day`,COUNT(t2.information_id) payment_num
FROM(SELECT@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAYFROM(SELECT@cdate := DATE_ADD('2022-01-01', INTERVAL + 1 DAY)FROM information_log) t0LIMIT 7) t1LEFT JOIN(SELECTDATE(a.visit_time) DAY,a.information_idFROMinformation_log aJOIN information_management bON a.information_id = b.idWHERE DATE(visit_time) <= CURDATE()AND DATE(visit_time) > DATE_SUB('2022-01-01', INTERVAL 7 DAY)) t2ON t2.day = t1.day
GROUP BY t1.`day`;

结果:

需求2:

获取近7天连续天数

 SELECT@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAYFROM(SELECT@cdate := DATE_ADD(CURDATE(), INTERVAL + 1 DAY)FROM information_log) t0LIMIT 7

结果:

方法技能:

SQL分析
左边操作:

1.@cdate := 是定义名为cdate的变量并赋值(select 后面必须用:=

2.@cdate := DATE_ADD(‘20171219’, INTERVAL + 1 DAY) 按照传入的日期’20171219’,加一天

3.SELECT @cdate := DATE_ADD(‘20171219’, INTERVAL + 1 DAY) FROM information_log 找一张表记录肯定大于10条的即可,执行结果如下:

4.@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY 把定义的cdate变量天数-1(自减)

5.LIMIT 7 限制一下条数,大功告成,我们得到了指定日期往前7天的记录

右边操作:

left join group by t1.day

  • 即按照左表关联业务数据,根据左表的日期分组,即分成了指定的7天数据,有记录就统计条数,没有记录就是0

mysql24小时数据没有补0相关推荐

  1. oracle中日期自动补全,没有数据自动补0

    oracle中日期自动补全,没有数据自动补0 1. 描述 最近在项目中遇到一个问题,在进行oracle相关查询操作的时候,查询某个月的数据,这个月中某些日期没有数据,就造成了日期的缺失,我想做的就是不 ...

  2. php+mysql统计7天、30天每天数据没有补0

    php+mysql统计7天.15天.30天没有补0: 先来看效果图 问题描述 查询数据库表中最近7天的记录 select count(id) count,FROM_UNIXTIME(dateline, ...

  3. oracle数据前面补0,Oracle 数字前面自动补0

    我在做一个功能的时候,明细的行项号是五位数,如: 00001,00002,,00010 这种形式,那么我们必须得在行项号前面补齐0 由于使用的是Oracle数据库,发现Oracle里面的 to_cha ...

  4. mysql查询最近7天的数据,没有数据自动补0

    问题描述 查询数据库表中最近7天的记录 select count(*),date(create_time) as date from task where datediff(now(),create_ ...

  5. mysql 7天自动拒单功能,mysql查询最近7天的数据,没有数据自动补0

    select DATE( createtime) date , createtime, count(1) as count   from  order表  where DATEDIFF( now(), ...

  6. Sql 查询近几天、近几个月数据没有补0,当月天数

    SELECTdc._date AS date,IFNULL( ccd.newsCount, 0 ) AS newsCount FROM(SELECT@s := @s + 1 AS _index,DAT ...

  7. mysql统计24小时数据

    示例1:根据时间点统计个数 SELECTDATE_FORMAT(create_time,'%Y-%m-%d %H') AS date,COUNT( * ) AS dateCountFROMsys_me ...

  8. 某银行存储瘫痪、缺失6个小时数据,只能人工补录

    某银行存储瘫痪.缺失6个小时数据,只能人工补录:因容量扩容操作触发光纤桥接器固件程序缺陷,造成大量磁盘在短时间内出现故障导致 转自@云头条 国内某银行生产中心存储设备发生故障,导致包括核心业务系统在内 ...

  9. mysql 怎么查询结果补0_mysql查询连续时间数据——无数据补0

    用D3来画统计图,数据是从mysql数据库中查出来的.mysql 统计图是关于某段时间内,每一年/每个月/每周的微博数量的折线图.数据表是一条微博为一条记录,每条记录有日期这个字段.sql 首先考虑用 ...

最新文章

  1. Promise - js异步控制神器
  2. UPC2710T高频放大器
  3. 微信小程序接入,https服务器搭建和调试
  4. HttpClient用法
  5. python从基础到入门电子书_python从入门进阶到大神必须看的电子书汇总
  6. 工业用微型计算机(21)-指令系统(17)
  7. mysql 命令记录_mysql命令记录 - 我要五个字的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 启迪公交:DRDS助力城市公交系统智能化
  9. c++中cend end_vector :: cend()函数以及C ++ STL中的示例
  10. linux下文件合并、分割、去重
  11. PAT 乙级 1043. 输出PATest(20) Java版
  12. 如何让Zen Cart 不在头部显示分类
  13. Few-shot learning和Meta-learning
  14. python 生成wifi密码字典_python生成密码字典的方法
  15. 如何成为优秀的程序员?
  16. 向上取整向下取整探讨
  17. larval 操作mysql数据库_laravel操作数据库
  18. python中斐波那契系数实现的几种方法
  19. Python+Opencv身份证号码区域提取及识别!
  20. 软件测试工程师涨薪攻略!3年如何达到30K!

热门文章

  1. 安卓手机显示连接不上服务器,安卓手机无法连接服务器
  2. 【JavaScript】关于基本数据类型和引用数据类型
  3. 射频器件厂商RFMD与TriQuint达成合并协议
  4. 【Matlab】评估网络节点重要性
  5. android手机视频编辑,安卓手机如何使用视频编辑器给自己录制的视频去除原声并添加配乐?安卓手机视频编辑器...
  6. 如何解决夜神模拟器连不上adb的问题
  7. 嵌入式系统概论-5-总线
  8. 计算机设备机房防静电标准,机房防静电地板设计标准是什么
  9. 电脑公司纯净版GHOST_XP_SP3_V12
  10. MSM8974平台功耗问题----通话过程启动Speaker导致功耗异常