国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql按照天統計報表當天沒有數據填0的實現代碼

2024-07-24 13:15:22
字體:
來源:轉載
供稿:網友

1.問題復現:

按照天數統計每天的總數,如果其中有幾天沒有數據,那么group by 返回會忽略那幾天,如何填充0?如下圖,統計的10-3~10-10 7天的數據,其中只有8號和10號有數據,這樣返回,數據只有2個,不符合報表統計的需求。期望沒有值填0

mysql,統計報表,mysql按照天統計報表

2.換個思維:

我們用一組連續的天數作為左表然后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`;

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,統計報表,mysql按照天統計報表

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,統計報表,mysql按照天統計報表

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,統計報表,mysql按照天統計報表

總結

以上所述是小編給大家介紹的mysql按照天統計報表當天沒有數據填0的實現代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙陵县| 乌拉特前旗| 丽水市| 孝感市| 汉阴县| 婺源县| 镇平县| 丹江口市| 阜城县| 恩平市| 文化| 宿迁市| 惠东县| 固镇县| 宝丰县| 栖霞市| 长沙市| 壶关县| 镇康县| 洛南县| 阜阳市| 阳信县| 宁海县| 墨竹工卡县| 武邑县| 湖州市| 龙门县| 伊吾县| 上杭县| 濮阳市| 云龙县| 怀远县| 通许县| 叙永县| 平顺县| 巫山县| 金溪县| 麦盖提县| 朝阳市| 纳雍县| 榆社县|