gpt4 book ai didi

mysql按照天统计报表当天没有数据填0的实现代码

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章mysql按照天统计报表当天没有数据填0的实现代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1.问题复现:

  。

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

mysql按照天统计报表当天没有数据填0的实现代码

2.换个思维:

  。

我们用一组连续的天数作为左表然后left join 要查询的数据 最后group by.:连续天数表 t1 left join 业务数据  t2 group by t1.day ,如下图:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
SELECT
  t1.` day `,
  COUNT (t2.user_id) payment_num
FROM
  ( 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. day
GROUP BY t1.` day `;

2.1 连续天数表 。

?
1
2
3
4
5
6
7
8
SELECT
  @cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY ) DAY
  FROM
  ( SELECT
   @cdate := DATE_ADD( '20171219' , INTERVAL + 1 DAY )
  FROM
   order ) t0
  LIMIT 7

执行结果如下:

mysql按照天统计报表当天没有数据填0的实现代码

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条的即可,执行结果如下:

mysql按照天统计报表当天没有数据填0的实现代码

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

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

2.2 左关联然后分组 。

left join group by t1.day 。

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

最终执行结果:

mysql按照天统计报表当天没有数据填0的实现代码

总结 。

以上所述是小编给大家介绍的mysql按照天统计报表当天没有数据填0的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。

原文链接:http://www.cnblogs.com/dennyzhangdd/p/8073181.html 。

最后此篇关于mysql按照天统计报表当天没有数据填0的实现代码的文章就讲到这里了,如果你想了解更多关于mysql按照天统计报表当天没有数据填0的实现代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com