sql時間段切分實現(xiàn)每隔x分鐘出一份高速門架車流量
業(yè)務(wù)場景:
我們需要查詢從表T里查詢某一天按照5分鐘為一段間隔通過高速門架的車流量。部分脫敏數(shù)據(jù)如下

表T里包含time,id,chepai,部分?jǐn)?shù)據(jù)為(’2020-02-23 00:43:27','某高速門架0010','浙XXXXXX')
按照正常情況下我們的限定where條件是time >= '2020-02-23 0:00' and time < '2020-02-23 0:00' 或者 between等,但是這樣來寫一兩個還行,要每隔5分鐘切分一次,需要寫二百多,過于麻煩
解決思路:
- 需要把時間進行下降到其5分鐘開始的最初時間處理,即00:12:30是在00:10:00-00:15:00之間,要轉(zhuǎn)換為00:10:00,同樣10:21:39在10:20:00-10:25:00,所以轉(zhuǎn)換為10:20:00,這樣一來五分鐘內(nèi)的數(shù)據(jù)都下降統(tǒng)一成5分初的時間,也就是5分鐘這一段的數(shù)據(jù)就有了。當(dāng)然也可以把數(shù)據(jù)進行上升處理,只不過23:55:00-23:59:59這個時間段就上升到第二天的00:00了
- 對時間段進行下降處理思想有了,問題是如何實現(xiàn):可以把時間字段轉(zhuǎn)換為數(shù)字整形,即每一個時間都對應(yīng)著一串?dāng)?shù)字,只要把這個數(shù)字由年月日時分秒切割相加再除以5,然后向下取整再乘以5,最后再轉(zhuǎn)換為時間,這樣就能達到下降了,這里的核心思想就是無法整除5的那部分余數(shù)就是5分鐘這個時間段的,現(xiàn)在我們向下取整,比如2.75向下取整是2,那么就能把時間下降了。同樣的如果是每隔10分鐘,那就是除以10,每隔1小時的,直接substr切分時間字段就可以了
- 這里使用強大的兩個函數(shù)FROM_UNIXTIME和UNIX_TIMESTAMP來完成,具體使用方法參加我的舊文http://www.dhdzp.com/article/239100.htm腳本實現(xiàn):
SELECT t.time,
t.id,
COUNT(DISTINCT(t.chepai)) num
FROM
(SELECT time,
id,
-- FROM_UNIXTIME把整型數(shù)字轉(zhuǎn)為時間類型
FROM_UNIXTIME(
-- 一般年月日無需動,直接unix_timestamp先轉(zhuǎn)為整型再加上時分秒即可
unix_timestamp(left(time,10))
-- 分*60+秒然后除以5,floor向下取整后再*5*60,具體思路見上
+5*60*floor((substr(PicTime,12,2)*60+substr(Pictime,15,2))/5)
) time,
chepai
FROM T
WHERE left(time,10) = '2020-02-23'
ORDER BY time asc)t
GROUP BY t.time,t.id
ORDER BY t.time,t.id到此這篇關(guān)于sql時間段切分實現(xiàn)每隔x分鐘出一份高速門架車流量的文章就介紹到這了,更多相關(guān)sql時間段切分內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Win10下安裝Sql Server 2014反復(fù)提示需安裝.NET Framework 3.5 SP1的解決方案
這篇文章主要介紹了Win10下安裝Sql Server 2014反復(fù)提示需安裝.NET Framework 3.5 SP1的解決方案,需要的朋友可以參考下2016-05-05
win7系統(tǒng)安裝SQLServer2000的詳細(xì)步驟(圖文)
這篇文章主要介紹了win7系統(tǒng)安裝SQLServer2000的詳細(xì)步驟,里面有一些需要注意的事項,大家可以參考下2014-07-07
sql server性能調(diào)優(yōu) I/O開銷的深入解析
這篇文章主要給大家介紹了關(guān)于sql server性能調(diào)優(yōu) I/O開銷的相關(guān)資料,文中通過示例代碼以及圖片介紹的非常詳細(xì),對大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
SQLServer 錯誤: 15404,無法獲取有關(guān) Windows NT 組/用戶 WIN-8IVSNAQS8T7\A
SQLServer 錯誤: 15404,無法獲取有關(guān) Windows NT 組/用戶 'WIN-8IVSNAQS8T7\Administrator' 的信息,錯誤代碼 0x534。 [SQLSTATE 42000] (ConnIsLoginSysAdmin)2021-06-06
SqlServer 2022通過臨時表和游標(biāo)遍歷方式邏輯處理獲取目標(biāo)數(shù)據(jù)
在SQL的存儲過程,函數(shù)中,經(jīng)常需要使用遍歷(遍歷table),其中游標(biāo)、臨時表等遍歷方法很常用,本文就來介紹一下SqlServer 2022通過臨時表和游標(biāo)遍歷方式邏輯處理獲取目標(biāo)數(shù)據(jù),感興趣的可以了解一下2024-04-04
sqlserver降水量數(shù)據(jù)按照時間分組行轉(zhuǎn)為列的操作方法
這篇文章主要介紹了sqlserver降水量數(shù)據(jù)按照時間分組行轉(zhuǎn)為列的操作方法,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08

