一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Mysql - mysql按照天統(tǒng)計(jì)報(bào)表當(dāng)天沒(méi)有數(shù)據(jù)填0的實(shí)現(xiàn)代碼

mysql按照天統(tǒng)計(jì)報(bào)表當(dāng)天沒(méi)有數(shù)據(jù)填0的實(shí)現(xiàn)代碼

2020-08-24 15:28只會(huì)一點(diǎn)java Mysql

這篇文章主要介紹了mysql按照天統(tǒng)計(jì)報(bào)表當(dāng)天沒(méi)有數(shù)據(jù)填0的實(shí)現(xiàn)方法,需要的朋友可以參考下

1.問(wèn)題復(fù)現(xiàn):

 

按照天數(shù)統(tǒng)計(jì)每天的總數(shù),如果其中有幾天沒(méi)有數(shù)據(jù),那么group by 返回會(huì)忽略那幾天,如何填充0?如下圖,統(tǒng)計(jì)的10-3~10-10 7天的數(shù)據(jù),其中只有8號(hào)和10號(hào)有數(shù)據(jù),這樣返回,數(shù)據(jù)只有2個(gè),不符合報(bào)表統(tǒng)計(jì)的需求。期望沒(méi)有值填0

mysql按照天統(tǒng)計(jì)報(bào)表當(dāng)天沒(méi)有數(shù)據(jù)填0的實(shí)現(xiàn)代碼

2.換個(gè)思維:

 

我們用一組連續(xù)的天數(shù)作為左表然后left join 要查詢的數(shù)據(jù) 最后group by.:連續(xù)天數(shù)表 t1 left join 業(yè)務(wù)數(shù)據(jù)  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 連續(xù)天數(shù)表

?
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

執(zhí)行結(jié)果如下:

mysql按照天統(tǒng)計(jì)報(bào)表當(dāng)天沒(méi)有數(shù)據(jù)填0的實(shí)現(xiàn)代碼

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í)行結(jié)果如下:

mysql按照天統(tǒng)計(jì)報(bào)表當(dāng)天沒(méi)有數(shù)據(jù)填0的實(shí)現(xiàn)代碼

4.@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY  把定義的cdate變量天數(shù)-1(自減)

5.LIMIT 7 限制一下條數(shù),大功告成,我們得到了指定日期往前7天的記錄

2.2 左關(guān)聯(lián)然后分組

left join group by t1.day

即按照左表關(guān)聯(lián)業(yè)務(wù)數(shù)據(jù),根據(jù)左表的日期分組,即分成了指定的7天數(shù)據(jù),有記錄就統(tǒng)計(jì)條數(shù),沒(méi)有記錄就是0

最終執(zhí)行結(jié)果:

mysql按照天統(tǒng)計(jì)報(bào)表當(dāng)天沒(méi)有數(shù)據(jù)填0的實(shí)現(xiàn)代碼

總結(jié)

以上所述是小編給大家介紹的mysql按照天統(tǒng)計(jì)報(bào)表當(dāng)天沒(méi)有數(shù)據(jù)填0的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费看黄色一级 | 亚洲国产成人在线视频 | 欧美黑人一级 | 亚洲精品一二区 | 国产精品福利一区二区亚瑟 | 亚洲狼人综合干 | 香港三级系列在线播放 | 91tv破解版不限次数 | 第一福利在线视频 | 精品视频在线观看免费 | 日本激情网站 | 高清毛片一区二区三区 | 精品久久99麻豆蜜桃666 | 亚洲精品一区二区三区在线播放 | 国产精品嫩草影院一二三区 | 色妞女女女女女bbbb | 国产免费一区二区 | 很黄的孕妇a级黄毛片 | 色综合色狠狠天天综合色 | 无码人妻丰满熟妇啪啪网不卡 | 翁公与小莹在客厅激情 | 国产ay | 91麻豆国产精品91久久久 | 日韩一| 欧美一区二区三区免费观看视频 | 暖暖暖免费观看在线观看 | 欧美成人影院免费观 | 精品蜜臀AV在线天堂 | 色综合伊人色综合网站中国 | 91大神在线观看精品一区 | 亚洲国产99999在线精品一区 | 精品国产国偷自产在线观看 | 爱情岛永久成人免费网站 | 肥胖老寡妇做性 | 香蕉eeww99国产精选播放 | 欧美男男gaygayxxx | 出水小说 | 护士伦理片 | 青草草视频在线观看 | 午夜影院网页 | julianann在厨房 |