MySQL如何按天統計數據,沒有記錄的天自動補充0

 

思路:sql

1. 經過該語句能夠實現指定日期到當前日期的日期列表數據,並用0填充要統計的sum字段性能

SELECT @cdate := date_add(@cdate,interval - 1 day) `date` , 0 as `sum`
from (SELECT @cdate :=date_add(CURDATE(),interval + 1 day) from <任意有數據表名>) t1 
where @cdate > '2017-08-03'

2. 要統計的SQL語句,如:code

select DATE_FORMAT(createTime,'%Y-%m-%d') as `date`,sum(money) 
from payTable 
group by `date`

3. 合併兩個結果集,並保證字段相同。完整代碼以下:io

select `date` ,max(`sum`) as `sum` from 
(
   SELECT @cdate := date_add(@cdate,interval - 1 day) `date` , 0 as `sum`
   from (SELECT @cdate :=date_add(CURDATE(),interval + 1 day) from <任意有數據表名>) t1 
   where @cdate > '2017-08-03'

   union all

   select DATE_FORMAT(createTime,'%Y-%m-%d') as `date`,sum(money) 
   from payTable 
   group by `date`

) _tmpAllTable 
group by `date`

以上SQL未考慮性能問題,在實際使用中慎重考慮class

相關文章
相關標籤/搜索