MyBatis mysal 日報表,月,年報表的統計


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

原文地址:http://blog.csdn.net/u010543785/article/details/52354957

 

最近在做報表統計,前端可視化插件用的是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)
  • 1

這里寫圖片描述

– –按周

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

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

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

這里寫圖片描述

–統計本周數據

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

–按月統計

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

這里寫圖片描述

–統計本月數據

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

–按季統計

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

–按年統計


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

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

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;

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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM