MySQL中實現連續日期內數據統計,缺省天數0補全,sql實現

 

創建test表

CREATE TABLE `test` (
  `id` int(11) DEFAULT NULL,
  `count` varchar(255) DEFAULT NULL,
  `create` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

sql語句

select ifnull(sum(u.count),0) as count,A.date from 
(
select date_add('2020-04-13',interval @i:=@i+1 day) as date 
from (
select 1 
union all select 1 
union all select 1
union all select 1 
union all select 1 
union all select 1 
union all select 1 
union all select 1
) as tmp,
 (select @i:= -1) t

) A
left join test u on s.date = date_format(u.create,'%Y-%m-%d')
GROUP BY A.date

執行代碼運行結果:

其中4月14,4月19,4月20是沒有數據以0表示;

@i:=@i+1:Oracle中有一個僞列rownum,可以在生成查詢結果表的時候生成一組遞增的序列號。MySQL中沒有這個僞列,但是有時候要用,可以用如下方法模擬生成一列自增序號。

ifnull : 如果返回爲null則用0代替;

coalesce(sum(count),0):如果返回爲null則用0代替;

DATE_ADD() 函數向日期添加指定的時間間隔。

中間紅色部分union all需要在java代碼中生成,日期間隔多少他生成多少個

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章