mysql按天,小時,半小時,N分鍾,分鍾進行數據分組統計


版權聲明:本文為博主原創文章,遵循 CC 4.0 by-sa 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接: https://blog.csdn.net/u010946448/article/details/83752984

mysql按天,小時,半小時,N分鍾,分鍾進行數據分組統計

mysql不同時間粒度下的分組統計

我們在做項目或者數據分析時,經常遇到這樣的需求:統計不同時間粒度下的數據分布情況,例如,每一天中每個小時網站的訪問量,某路口每半個小時通過的車輛數量等。對於此類的問題,一個sql簡單的查詢就能實現,故特此記錄下,方便以后使用。
在MySQL中,我的表為:track
數據結構如下所示:
表track的數據結構示意

按天統計

SELECT DATE(TimeStart) AS date, COUNT(*) AS num
FROM track
WHERE Flag = 0 AND Duration >= 300 
GROUP BY date
ORDER BY date;

    
    
    
            
  • 1
  • 2
  • 3
  • 4
  • 5

按小時統計

SELECT DATE_FORMAT(TimeStart, '%Y-%m-%d %H:00:00') AS time, COUNT(*) AS num
FROM track
WHERE Flag = 0 AND Duration >= 300
GROUP BY time
ORDER BY time;

    
    
    
            
  • 1
  • 2
  • 3
  • 4
  • 5

結果如下:
一小時結果

按半小時統計

SELECT time, COUNT( * ) AS num 
FROM
	(
	SELECT Duration,
		DATE_FORMAT(
			concat( date( TimeStart ), ' ', HOUR ( TimeStart ), ':', floor( MINUTE ( TimeStart ) / 30 ) * 30 ),
			'%Y-%m-%d %H:%i' 
		) AS time 
	FROM tarck
	WHERE Flag = 0  AND Duration >= 300 
	) a 
GROUP BY DATE_FORMAT( time, '%Y-%m-%d %H:%i' ) 
ORDER BY time;

    
    
    
            
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

結果如下:
半小時查詢結果

按N分鍾統計

將上面的SQL語句稍微修改下,就可以實現按任意N分鍾為時間片的分組統計,如按10分鍾統計,先上代碼:

SELECT time, COUNT( * ) AS num 
FROM
	(
	SELECT Duration,
		DATE_FORMAT(
			concat( date( TimeStart ), ' ', HOUR ( TimeStart ), ':', floor( MINUTE ( TimeStart ) / 10 ) * 10 ),
			'%Y-%m-%d %H:%i' 
		) AS time 
	FROM tarck
	WHERE Flag = 0  AND Duration >= 300 
	) a 
GROUP BY DATE_FORMAT( time, '%Y-%m-%d %H:%i' ) 
ORDER BY time;

    
    
    
            
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

基本思路:
將datetime類型的時間轉化為相應時間片的時間,例如將‘2017-03-01 01:08:19’ 轉化為‘2017-03-01 01:00:00’,然后group by即可。

按分鍾統計

將按小時統計的SQL語句稍微修改下,就可以實現按分鍾統計

SELECT DATE_FORMAT(TimeStart, '%Y-%m-%d %H:%i:00') AS time, COUNT(*) AS num
FROM track 
WHERE Flag = 0 AND Duration >= 300
GROUP BY time
ORDER BY time;

    
    
    
            
  • 1
  • 2
  • 3
  • 4
  • 5

DATE_FORMAT功能強大,可以根據format字符串格式化date值,參考下面鏈接
http://www.w3school.com.cn/sql/func_date_format.asp
參考博客:

  1. https://blog.csdn.net/kaka_buka/article/details/52614643
  2. https://blog.csdn.net/Beingccccc/article/details/78685490
                                </div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">
                </div>
posted @ 2019-08-21 17:14  kennard_owen  閱讀( 1616)  評論( 0編輯  收藏


免責聲明!

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



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