網(wǎng)站首頁 編程語言 正文
業(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等,但是這樣來寫一兩個(gè)還行,要每隔5分鐘切分一次,需要寫二百多,過于麻煩
解決思路:
- 需要把時(shí)間進(jìn)行下降到其5分鐘開始的最初時(shí)間處理,即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分初的時(shí)間,也就是5分鐘這一段的數(shù)據(jù)就有了。當(dāng)然也可以把數(shù)據(jù)進(jìn)行上升處理,只不過23:55:00-23:59:59這個(gè)時(shí)間段就上升到第二天的00:00了
- 對時(shí)間段進(jìn)行下降處理思想有了,問題是如何實(shí)現(xiàn):可以把時(shí)間字段轉(zhuǎn)換為數(shù)字整形,即每一個(gè)時(shí)間都對應(yīng)著一串?dāng)?shù)字,只要把這個(gè)數(shù)字由年月日時(shí)分秒切割相加再除以5,然后向下取整再乘以5,最后再轉(zhuǎn)換為時(shí)間,這樣就能達(dá)到下降了,這里的核心思想就是無法整除5的那部分余數(shù)就是5分鐘這個(gè)時(shí)間段的,現(xiàn)在我們向下取整,比如2.75向下取整是2,那么就能把時(shí)間下降了。同樣的如果是每隔10分鐘,那就是除以10,每隔1小時(shí)的,直接substr切分時(shí)間字段就可以了
- 這里使用強(qiáng)大的兩個(gè)函數(shù)FROM_UNIXTIME和UNIX_TIMESTAMP來完成,具體使用方法參加我的舊文https://www.jb51.net/article/239100.htm腳本實(shí)現(xiàn):
SELECT t.time, t.id, COUNT(DISTINCT(t.chepai)) num FROM (SELECT time, id, -- FROM_UNIXTIME把整型數(shù)字轉(zhuǎn)為時(shí)間類型 FROM_UNIXTIME( -- 一般年月日無需動(dòng),直接unix_timestamp先轉(zhuǎn)為整型再加上時(shí)分秒即可 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
原文鏈接:https://mochou.blog.csdn.net/article/details/104516507
相關(guān)推薦
- 2022-04-09 Android項(xiàng)目中g(shù)radle的執(zhí)行流程_Android
- 2022-10-11 MybatisPlus的UpdateWrapper和QueryWrapper的區(qū)別
- 2023-02-23 Python利用Flask動(dòng)態(tài)生成漢字頭像_python
- 2022-03-20 Entity?Framework?Core關(guān)聯(lián)刪除_實(shí)用技巧
- 2023-04-12 Pandas創(chuàng)建DataFrame提示:type?object?'object'?has?no?at
- 2022-09-13 Android實(shí)現(xiàn)簡單旋轉(zhuǎn)動(dòng)畫_Android
- 2022-11-09 發(fā)布?Android?library?到?Maven?解析_Android
- 2023-10-17 將一維數(shù)組截取成二維數(shù)組,要求二維數(shù)組中的每個(gè)數(shù)組length是一樣的才可以
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支