mysql按照天統(tǒng)計報表當天沒有數(shù)據(jù)填0的實現(xiàn)代碼
1.問題復現(xiàn):
按照天數(shù)統(tǒng)計每天的總數(shù),如果其中有幾天沒有數(shù)據(jù),那么group by 返回會忽略那幾天,如何填充0?如下圖,統(tǒng)計的10-3~10-10 7天的數(shù)據(jù),其中只有8號和10號有數(shù)據(jù),這樣返回,數(shù)據(jù)只有2個,不符合報表統(tǒng)計的需求。期望沒有值填0
2.換個思維:
我們用一組連續(xù)的天數(shù)作為左表然后left join 要查詢的數(shù)據(jù) 最后group by.:連續(xù)天數(shù)表 t1 left join 業(yè)務數(shù)據(jù) 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 連續(xù)天數(shù)表
SELECT @cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY FROM (SELECT @cdate := DATE_ADD('20171219', INTERVAL + 1 DAY) FROM order) t0 LIMIT 7
執(zhí)行結果如下:
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條的即可,執(zhí)行結果如下:
4.@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY
把定義的cdate變量天數(shù)-1(自減)
5.LIMIT 7 限制一下條數(shù),大功告成,我們得到了指定日期往前7天的記錄
2.2 左關聯(lián)然后分組
left join group by t1.day
即按照左表關聯(lián)業(yè)務數(shù)據(jù),根據(jù)左表的日期分組,即分成了指定的7天數(shù)據(jù),有記錄就統(tǒng)計條數(shù),沒有記錄就是0
最終執(zhí)行結果:
總結
以上所述是小編給大家介紹的mysql按照天統(tǒng)計報表當天沒有數(shù)據(jù)填0的實現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- php、mysql查詢當天,查詢本周,查詢本月的數(shù)據(jù)實例(字段是時間戳)
- mysql中獲取一天、一周、一月時間數(shù)據(jù)的各種sql語句寫法
- MySQL如何統(tǒng)計一個數(shù)據(jù)庫所有表的數(shù)據(jù)量
- mysql聚合統(tǒng)計數(shù)據(jù)查詢緩慢的優(yōu)化方法
- laravel實現(xiàn)按月或天或小時統(tǒng)計mysql數(shù)據(jù)的方法
- 詳解mysql 獲取某個時間段每一天、每一個小時的統(tǒng)計數(shù)據(jù)
- mysql 獲取規(guī)定時間段內(nèi)的統(tǒng)計數(shù)據(jù)
- MySql按時,天,周,月進行數(shù)據(jù)統(tǒng)計
相關文章
解決MySQL Sending data導致查詢很慢問題的方法與思路
這篇文章主要介紹了解決MySQL Sending data導致查詢很慢問題的方法與思路,感興趣的小伙伴們可以參考一下2016-04-04MYSQL錯誤:Can’t open file: ‘×××.MYI’ (errno: 14
這個錯誤是典型的mysql表受損造成的,解決的辦法就是修復表,這個問題也是mysql經(jīng)常容易出現(xiàn)的,mysql表和索引損壞的幾率很大,但是修復也很方便2011-01-01MySQL中year()和month()函數(shù)解析與輸出示例詳解
這篇文章主要介紹了MySQL中year()和month()函數(shù)解析與輸出,通過本文,我們詳細了解了MySQL中year()和month()函數(shù)的底層邏輯,它們能夠從日期或日期時間類型的數(shù)據(jù)中提取年份和月份,需要的朋友可以參考下2023-07-07

Mysql數(shù)據(jù)庫安裝完成后需要進行的6個后續(xù)操作

asp+mysql+utf8 網(wǎng)頁出現(xiàn)亂碼問題的解決方法

Mysql計算字段長度函數(shù)之LENGTH函數(shù)