MySQL實現按天分組統計,無資料自動補0

2021-10-09 08:51:52 字數 1361 閱讀 4436

最近要在系統中加個統計功能,要求是按指定日期範圍裡按天分組統計資料量,並且要能夠檢視該時間段內每天的資料量。

直接按資料表日期欄位group by統計,發現如果某天沒資料,該日期是不出現的,這不太符合業務需求。

1、先用乙個查詢把指定日期範圍的日期列表搞出來

select @cdate:= date_add(@cdate,interval - 1 day) as date_str , 0 as date_count

from (select @cdate:=date_add(curdate(),interval + 1 day) from 資料庫隨便個有資料的表名) t1

where @cdate > 『2018-12-01』 and @cdate < 『2018-12-31』

2、業務統計查詢也按上述日期查詢給統計日期和數量設定別名

select from_unixtime(m.時間戳字段, 『%y-%m-%d』) as date_str , count(*) as date_count

from 業務資料表名 as m

group by from_unixtime(m.時間戳字段, 『%y-%m-%d』)

3、把兩個查詢用左連線合起,沒數量的日期填0,完工

select t1.time, coalesce(t2.date_total_count, 0) as count

from(

select @cdate := date_add(@cdate, interval - 1 day) as time from(select @cdate := date_add(curdate(), interval + 1 day) from tb_operate_log) tmp1

) t1

left join(

select date_format(m.log_time, '%y-%m-%d') as time, count(*) as date_total_count from tb_operate_log as m where m.log_time and log_desc like "更新%" group by date_format(m.log_time, '%y-%m-%d')

) t2

on t1.time = t2.time

where

t1.time

-- and t2.log_desc like "登入%"

limit 7

查詢結果

MySQL 按天分組統計

select date format c.consumecjtime y m d as day sum c.consumetotalprice as totalprice from consume as c where c.consumecjtime 2018 03 27 and c.consume...

Mysql按天分組(按日分組)

select date format date created,y m d as day,sum order price as sumtol from dn sale where sale person id 1 group by date format date created,y m d 根據f...

MySQL按區間分組查詢統計報表

表結構如下 列名中文名usertripid 自增id eventtime 記錄時間,資料格式 yyyy mm dd hh mm ss h小時時間 m分鐘時間 userid 使用者id 部分資料內容如下,正常情況下資料量在35w左右 查詢語句 select d.eventtime,h,d.m,elt ...