mysql按日期分組查詢統(tǒng)計的時候,數(shù)據(jù)補0

思路是利用 一張日期的輔助表 來 left join 自己的表 查詢,空用ifnull(xxx,0)。

參考博文:https://blog.csdn.net/jie11447416/article/details/50887888


不過我自己的需求和博主的不太一樣

我還需要查每天的

我的數(shù)據(jù)庫字段:


數(shù)據(jù)庫字段


CREATE TABLE num (i int);-- 創(chuàng)建一個表用來儲存0-9的數(shù)字

INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);-- 生成0-9的數(shù)字,方便以后計算時間

CREATE TABLE? if not exists calendar(datehour?datetime ); -- 生成一個存儲日期的表,datehour?是字段名

-- 這里是生成并插入日期數(shù)據(jù)

INSERT INTO calendar ( datehour ) SELECT -- 生成按小時的數(shù)據(jù)

DATE_ADD( ( DATE_FORMAT( "2018-11-10", '%Y-%m-%d' ) ), INTERVAL numlist.id HOUR ) AS `date`

FROM

? ? (

SELECT

? ? n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000 AS id

FROM

? ? num n1

? ? CROSS JOIN num AS n10

? ? CROSS JOIN num AS n100

? ? CROSS JOIN num AS n1000

? ? CROSS JOIN num AS n10000

? ? ) AS numlist;


此時數(shù)據(jù)庫表如下

插入

num表看各位心情,我是刪掉了

SELECT

b.datehour ,

ifnull(a.consume_money, 0 )?

FROM

calendar b

LEFT JOIN (

SELECT

*

FROM

consume ) a

ON a.consume_when = b.datehour


結(jié)果如下:


sql結(jié)果

以上只為演示sql,效率低下,勿噴,各位先加上where語句執(zhí)行效率會很高

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,871評論 0 10
  • 這一篇最主要是記錄下命令,方便以后查找 使用Mysql 創(chuàng)建數(shù)據(jù)庫 create database mysql_t...
    Treehl閱讀 671評論 0 0
  • 前言 其實一直感覺自己的MySQL十分弱逼,因為用的Laravel,同時也因為自己沒怎么看過MySQL基礎方面的東...
    禾線子閱讀 725評論 0 0
  • 2017/3/14 RDBMS:關(guān)系型數(shù)據(jù)庫管理系統(tǒng) 關(guān)系模型獨立于語言 SQL有幾種不同類型的語言:數(shù)據(jù)定義語言...
    ancherl閱讀 1,803評論 0 6
  • 校服的美 當你漫步在春天里,看見由一粒粒金黃匯成的油菜花海洋,你覺得美不美?那一色的金黃是美的,美在整齊。...
    二班班閱讀 238評論 0 0

友情鏈接更多精彩內(nèi)容