天天看點

mysql 按日、周、月、年統計sql語句整理,實作報表統計可視化

最近在做報表統計,前端可視化插件用的是Echarts,個人認為是目前免費插件裡的翹楚​​http://echarts.baidu.com/demo.html#pie-doughnut​​​​例子示範​​

現在重點如何把背景資料源搞定,我采用的是mybatis,是以重點是怎麼把sql語句寫好。

– –按日

SELECT COUNT(*),DATE(CreateTime) FROM t_voipchannelrecord WHERE YEAR(CreateTime)='2016' GROUP BY DAY(CreateTime)      
mysql 按日、周、月、年統計sql語句整理,實作報表統計可視化

– –按周

SELECT COUNT(*),WEEK(CreateTime) FROM t_voipchannelrecord WHERE MONTH(CreateTime) = '8' GROUP BY      

–周一到周五每天的統計結果

SELECT COUNT(*),DAYNAME(CreateTime) FROM t_voipchannelrecord WHERE YEAR(CreateTime) = '2016' GROUP BY      
mysql 按日、周、月、年統計sql語句整理,實作報表統計可視化

–統計本周資料

SELECT COUNT(*) FROM t_voipchannelrecord WHERE MONTH(CreateTime) =
MONTH(CURDATE()) AND WEEK(CreateTime) = WEEK(CURDATE())      

–按月統計

SELECT COUNT(*),MONTH(CreateTime) FROM t_voipchannelrecord WHERE YEAR(CreateTime) = '2016' GROUP BY MONTH(CreateTime)       
mysql 按日、周、月、年統計sql語句整理,實作報表統計可視化

–統計本月資料

SELECT COUNT(*) FROM t_voipchannelrecord WHERE MONTH(CreateTime) =
MONTH(CURDATE()) AND YEAR(CreateTime) = YEAR(CURDATE())      

–按季統計

SELECT COUNT(*),QUARTER(CreateTime) FROM t_voipchannelrecord WHERE YEAR(CreateTime) = '2016' GROUP BY      

–按年統計

SELECT COUNT(*),YEAR(CreateTime) FROM t_voipchannelrecord  GROUP BY YEAR(CreateTime)       

–時間段(該段參考:​​出處​​)

N天内記錄
WHERE TO_DAYS(NOW()) - TO_DAYS(時間字段) <= N
當天的記錄
where date(時間字段)=date(now())
 或
where to_days(時間字段) = to_days(now());

 查詢一周:
select * from table   where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(column_time);

 查詢一個月:
select * from table where DATE_SUB(CURDATE(), INTERVAL INTERVAL 1 MONTH) <= date(column_time);



查詢'06-03'到'07-08'這個時間段内所有過生日的會員:
   Select * From user Where
DATE_FORMAT(birthday,'%m-%d') >= '06-03' and DATE_FORMAT(birthday,'%m-%d')
<= '07-08';

統計一季度資料,表時間字段為:savetime 
group by concat(date_format(savetime, '%Y '),FLOOR((date_format(savetime, '%m ')+2)/3))
 或
select YEAR(savetime)*10+((MONTH(savetime)-1) DIV 3) +1,count(*) 
from yourTable
group by YEAR(savetime)*10+((MONTH(savetime)-1) DIV 3) +1;