国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蒙城县| 南江县| 遂昌县| 扬中市| 波密县| 双辽市| 东阳市| 青海省| 南乐县| 会宁县| 长岛县| 马公市| 微山县| 梁山县| 蒙城县| 瓦房店市| 舞阳县| 明光市| 巨野县| 伊川县| 山西省| 大余县| 丰原市| 双牌县| 淳安县| 林芝县| 孟津县| 错那县| 五原县| 贡嘎县| 邢台市| 蓝山县| 黔西县| 台东县| 太白县| 旌德县| 邛崃市| 兰溪市| 德江县| 阿城市| 泸西县|