DDR爱好者之家 Design By 杰米

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 ,如下图:

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 连续天数表

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的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。