mysql如何按照天统计报表当天没有数据填0

  介绍

这篇文章主要介绍mysql如何按照天统计报表当天没有数据填0,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

<强> 1。问题复现:

按照天数统计每天的总数,如果其中有几天没有数据,那么group by返回会忽略那几天,如何填充0 ?如下图,统计的三分~演出7天的数据,其中只有8号和10号有数据,这样返回,数据只有2个,不符合报表统计的需求。期望没有值填0

 mysql如何按照天统计报表当天没有数据填0

<强> 2。换个思维:

我们用一组连续的天数作为左表然后离开加入要查询的数据最后组。:连续天数表t1离开加入业务数据,t2 group by t1。天,如下图:

选择   ,t1.‘天’,   ,数(t2.user_id) payment_num   从   ,(选择   ,@cdate :=, DATE_ADD (@cdate, INTERVAL 作用;1,天),一天   ,从   ,(选择   @cdate 才能;:=,DATE_ADD (& # 39; 20171219 & # 39;,, INTERVAL  +, 1,)   ,从   顺序)才能t0   LIMIT  7), t1   LEFT 加入   ,(选择   日期(a.create_time),才能一天,   a.user_id才能   ,从   ,pay_payment    JOIN 才能;dealer_store  b   提醒才能a.order_no =b.order_no   ,WHERE 日期(create_time), & lt;=, & # 39; 20171219 & # 39;   ,,以及日期(create_time),祝辞,DATE_SUB (& # 39; 20171219 & # 39;,, INTERVAL  7,天)   ),才能t2   ,提醒t2.day =t1.day   GROUP  BY  t1.‘天’;

<强> 2.1连续天数表

选择   ,@cdate :=, DATE_ADD (@cdate, INTERVAL 作用;1,天),一天   ,从   ,(选择   @cdate 才能;:=,DATE_ADD (& # 39; 20171219 & # 39;,, INTERVAL  +, 1,)   ,从   顺序)才能t0   以前,LIMIT  7

执行结果如下:

 mysql如何按照天统计报表当天没有数据填0

SQL分析:

1。<代码> @cdate:=,是定义名为cdate的变量并赋值(选择后面必须用:=)

2 <代码>。@cdate:=DATE_ADD(& # 39; 20171219 & # 39;间隔+ 1天)按照传入的日期& # 39;20171219 & # 39;加一天

3。<代码>选择@cdate:=DATE_ADD(& # 39; 20171219 & # 39;间隔+ 1天)从“订单”,找一张表记录肯定大于10条的即可,执行结果如下:

 mysql如何按照天统计报表当天没有数据填0

4 <代码>。@cdate:=DATE_ADD (@cdate,间隔- 1天)DAY  把定义的cdate变量天数1(自减)

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

<强> 2.2左关联然后分组

<代码>左加入group by t1。天

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

最终执行结果:

 mysql如何按照天统计报表当天没有数据填0

以上是“mysql如何按照天统计报表当天没有数据填0”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

mysql如何按照天统计报表当天没有数据填0