mysql groupBy 按日期分組

2021-10-11 18:49:20 字數 1394 閱讀 2221

需求中經常會有按日期,月份,年份分組統計的操作

那麼groupby直接是實現不了的,需要轉化一下,話不多說,看**

select

from_unixtime(create_time, '%y-%m-%d') as day, create_time,

count( distinct uid ) as amount

from

`black_production_user`

where

create_time >= 1588262400

and create_time <= 1607529599

group by day

以上**可以按每天分組並統計每天的新增資料量,按月或年的只要修改日期格式就好

但上面只統計到了有資料的天數,某天沒有時就不返回該天,實際情況中某天沒有希望返回0

那按上面的結果在程式中迴圈賦預設值也可以

其實sql也可以實現,具體看下面**:

select day,sum(count) as add_num from (

select count(distinct uid) count, from_unixtime(create_time,'%y-%m-%d') day from `black_production_user` a

where a.create_time >= 1588262400 and a.create_time < 1607529599

group by day

union all

select @uu:=0 as count,day from (

select @num:=@num+1 as number,date_format(adddate('2020-05-01 00:00:00', interval @num day),'%y-%m-%d') as day

from `black_production_user` a ,(select @num:=-1) t

order by day ) rr

) sss group by sss.day order by day

這條sql稍微有點繞,需要自己理解便可,查詢結果如下,某天沒有資料預設有 0 填充

####注意: from_unixtime 針對於資料時間儲存格式為時間戳, 若庫中時間儲存的日期格式 : 如 : 2020-12-10 10:03:24 ,這樣的使用 date_format 即可

mysql按日期查詢資料 mysql按日期查詢資料

問題 mysql按日期查詢乙個月內的資料,查詢返回時結果集中只顯示有資料的結果 需求 查詢結果中假如當天沒有資料,自動填零並輸出 事件描述 sql語句 select date format date added,m.d as day,count product id as total from ht...

按日期查詢

select date format create time,y u weeks,count caseid count from tc case group byweeks select date format create time,y m d days,count caseid count fr...

MYSQL GROUP BY用法詳解

建乙個測試表 複製 如下 create table test group id int auto increment primary key,name varchar 32 class varchar 32 score int 檢視表結構 desc test group 插入資料 測試開始 我想知道...