mysql按天/小時(shí)/半小時(shí)/N分鐘/分鐘進(jìn)行數(shù)據(jù)分組統(tǒng)計(jì)功能
mysql不同時(shí)間粒度下的分組統(tǒng)計(jì)
我們?cè)谧鲰?xiàng)目或者數(shù)據(jù)分析時(shí),經(jīng)常遇到這樣的需求:統(tǒng)計(jì)不同時(shí)間粒度下的數(shù)據(jù)分布情況,例如,每一天中每個(gè)小時(shí)網(wǎng)站的訪(fǎng)問(wèn)量,某路口每半個(gè)小時(shí)通過(guò)的車(chē)輛數(shù)量等。對(duì)于此類(lèi)的問(wèn)題,一個(gè)sql簡(jiǎn)單的查詢(xún)就能實(shí)現(xiàn),故特此記錄下,方便以后使用。
在MySQL中,我的表為:track
數(shù)據(jù)結(jié)構(gòu)如下所示:
按天統(tǒng)計(jì)
SELECT DATE(TimeStart) AS date, COUNT(*) AS num FROM track WHERE Flag = 0 AND Duration >= 300 GROUP BY date ORDER BY date;
按小時(shí)統(tǒng)計(jì)
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;
按半小時(shí)統(tǒng)計(jì)
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;
按N分鐘統(tǒng)計(jì)
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;
基本思路:將datetime類(lèi)型的時(shí)間轉(zhuǎn)化為相應(yīng)時(shí)間片的時(shí)間,例如將‘2017-03-01 01:08:19’ 轉(zhuǎn)化為‘2017-03-01 01:00:00’,然后group by即可。
按分鐘統(tǒng)計(jì)
將按小時(shí)統(tǒng)計(jì)的SQL語(yǔ)句稍微修改下,就可以實(shí)現(xiàn)按分鐘統(tǒng)計(jì)
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;
參考資料: https://blog.csdn.net/u010946448/article/details/83752984
到此這篇關(guān)于mysql按天/小時(shí)/半小時(shí)/N分鐘/分鐘進(jìn)行數(shù)據(jù)分組統(tǒng)計(jì)的文章就介紹到這了,更多相關(guān)mysql數(shù)據(jù)分組統(tǒng)計(jì)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL統(tǒng)計(jì)今日生成create_time的數(shù)據(jù)量的方法小結(jié)
- mysql數(shù)據(jù)庫(kù)空間統(tǒng)計(jì)sql代碼示例
- MySQL數(shù)據(jù)庫(kù)統(tǒng)計(jì)函數(shù)COUNT的使用及說(shuō)明
- MySQL如何使用DATE_FORMAT()對(duì)查詢(xún)結(jié)果按日、周、月分組統(tǒng)計(jì)
- MYSQL數(shù)據(jù)庫(kù)查詢(xún)按日期分組統(tǒng)計(jì)詳細(xì)代碼
- MySQL統(tǒng)計(jì)時(shí)間差的平均值方式
- MySQL實(shí)現(xiàn)按分秒統(tǒng)計(jì)數(shù)據(jù)量方式
相關(guān)文章
深入講解數(shù)據(jù)庫(kù)中Decimal類(lèi)型的使用以及實(shí)現(xiàn)方法
MySQL?DECIMAL數(shù)據(jù)類(lèi)型用于在數(shù)據(jù)庫(kù)中存儲(chǔ)精確的數(shù)值,我們經(jīng)常將DECIMAL數(shù)據(jù)類(lèi)型用于保留準(zhǔn)確精確度的列,例如會(huì)計(jì)系統(tǒng)中的貨幣數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫(kù)中Decimal類(lèi)型的使用以及實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2022-02-02MySQL的Redo Log數(shù)據(jù)恢復(fù)核心機(jī)制面試精講
這篇文章主要為大家介紹了MySQL的Redo Log數(shù)據(jù)恢復(fù)核心機(jī)制面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10MySQL數(shù)據(jù)的讀寫(xiě)分離之maxscale的使用方式
這篇文章主要介紹了MySQL數(shù)據(jù)的讀寫(xiě)分離之maxscale的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12mysql創(chuàng)建本地用戶(hù)及賦予數(shù)據(jù)庫(kù)權(quán)限的方法示例
這篇文章主要介紹了mysql創(chuàng)建本地用戶(hù)及賦予數(shù)據(jù)庫(kù)權(quán)限的相關(guān)資料,文中的介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04MySQL最佳實(shí)踐之分區(qū)表基本類(lèi)型
這篇文章主要給大家介紹了關(guān)于MySQL最佳實(shí)踐之分區(qū)表基本類(lèi)型的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05mysql密碼正確無(wú)法登陸(host的問(wèn)題)
本文主要介紹了mysql密碼正確無(wú)法登陸(host的問(wèn)題),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05磁盤(pán)已滿(mǎn)造成的mysql啟動(dòng)失敗問(wèn)題分享
這篇文章主要介紹了磁盤(pán)已滿(mǎn)造成的mysql啟動(dòng)失敗問(wèn)題分享,需要的朋友可以參考下2014-04-04MySQL提取Json內(nèi)部字段轉(zhuǎn)儲(chǔ)為數(shù)字
本文主要介紹了MySQL提取Json內(nèi)部字段轉(zhuǎn)儲(chǔ)為數(shù)字,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07