mysql不同時間粒度下的分組統計
1、測試表數據如下:
2、MySQL按天分組數據
DATE() 函數返回日期或日期/時間表達式的日期部分。如下所示:
可以如下Sql展示:
SELECT DATE(time) AS date, COUNT(*) AS num FROM group_time_test GROUP BY date ORDER BY date desc ;
結果如下所示:
3、按分鍾分組如下所示:
DATE_FORMAT() 函數用於以不同的格式顯示日期/時間數據。
DATE_FORMAT(date,format)
date 參數是合法的日期。format 規定日期/時間的輸出格式。
注:完整的年月日時分秒格式如:%Y-%m-%d %H:%i:%s
測試輸出當前時間如下:
Sql語句可以如下書寫:
SELECT DATE_FORMAT(time, '%Y-%m-%d %H') AS date, COUNT(*) AS num FROM group_time_test GROUP BY date ORDER BY date desc ;
輸出結果如下:
因為DATE_FORMAT是格式化函數,所以也可以這樣寫
SELECT DATE_FORMAT(time, '%Y-%m-%d %H:00:00') AS date, COUNT(*) AS num FROM group_time_test GROUP BY date ORDER BY date desc ;
4、分別以年、月、分、秒分組
年
SELECT DATE_FORMAT(time, '%Y') AS date, COUNT(*) AS num FROM group_time_test GROUP BY date ORDER BY date desc ;
月:
SELECT DATE_FORMAT(time, '%Y-%m') AS date, COUNT(*) AS num FROM group_time_test GROUP BY date ORDER BY date desc ;
分:
SELECT DATE_FORMAT(time, '%Y-%m-%d %H:%i') AS date, COUNT(*) AS num FROM group_time_test GROUP BY date ORDER BY date desc ;
秒:
SELECT DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') AS date, COUNT(*) AS num FROM group_time_test GROUP BY date ORDER BY date desc ;
5、帶計算類的時間統計
需要用到下列方法,依次為年、月、日、時、分、秒、星期
select year(NOW()); select MONTH(NOW()); select DAY(NOW()); select HOUR(NOW()); select MINUTE(NOW()); select SECOND(NOW()); select WEEK(NOW());
5.1 按半小時分組統計
Sql與結果如下:
SELECT DATE_FORMAT( concat( date( time ), ' ', HOUR ( time ), ':', floor( MINUTE ( time ) / 30 ) * 30 ), '%Y-%m-%d %H:%i' ) AS date ,count(*) FROM group_time_test GROUP BY date ;
其他不一一舉例
參考資料:https://blog.csdn.net/u010946448/article/details/83752984