时间:2021-05-24
按照天数统计每天的总数,如果其中有几天没有数据,那么group by 返回会忽略那几天,如何填充0?如下图,统计的10-3~10-10 7天的数据,其中只有8号和10号有数据,这样返回,数据只有2个,不符合报表统计的需求。期望没有值填0
我们用一组连续的天数作为左表然后left join 要查询的数据 最后group by.:连续天数表 t1 left join 业务数据 t2 group by t1.day ,如下图:
SELECT t1.`day`, COUNT(t2.user_id) payment_numFROM (SELECT @cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY FROM (SELECT @cdate := DATE_ADD('20171219', INTERVAL + 1 DAY) FROM order) t0 LIMIT 7) t1 LEFT JOIN (SELECT DATE(a.create_time) DAY, a.user_id FROM pay_payment a JOIN dealer_store b ON a.order_no = b.order_no WHERE DATE(create_time) <= '20171219' AND DATE(create_time) > DATE_SUB('20171219', INTERVAL 7 DAY) ) t2 ON t2.day = t1.dayGROUP BY t1.`day`;执行结果如下:
SQL分析:
1. @cdate := 是定义名为cdate的变量并赋值(select 后面必须用:=)
2.@cdate := DATE_ADD('20171219', INTERVAL + 1 DAY) 按照传入的日期'20171219',加一天
3.SELECT @cdate := DATE_ADD('20171219', INTERVAL + 1 DAY) FROM `order` 找一张表记录肯定大于10条的即可,执行结果如下:
4.@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY 把定义的cdate变量天数-1(自减)
5.LIMIT 7 限制一下条数,大功告成,我们得到了指定日期往前7天的记录
left join group by t1.day
即按照左表关联业务数据,根据左表的日期分组,即分成了指定的7天数据,有记录就统计条数,没有记录就是0
最终执行结果:
总结
以上所述是小编给大家介绍的mysql按照天统计报表当天没有数据填0的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例实现了php+mysql数据库随机重排的方法,可将表中的所有数据随机读出来一次之后再进行随机保存到另一个表,从而达到了记录随机的功能。主要实现代码如下:
Python实现Mysql数据统计的实例代码如下所示:importpymysqlimportxlwtexcel=xlwt.Workbook(encoding='
统计出相关网站所有数据。不管存在几个网站都需要建立一个网站的数据报表,可能在接手老企业网站的时候,数据这块是完全缺失的,这个时候就需要迅速建立起相关的数据报表,
本文实例讲述了Python实现生成随机数据插入mysql数据库的方法。分享给大家供大家参考,具体如下:运行结果:实现代码:importrandomasrimpo
本文主要研究的是python将字典内容存入mysql,分享了实现代码,具体介绍如下。1.背景项目需要,用python实现了将字典内容存入本地的mysql数据库。