MsSql
主页 > 数据库 > MsSql >

sql时间段切分实现每隔x分钟出一份高速门架车流量

2022-03-01 | 秩名 | 点击:

业务场景:

我们需要查询从表T里查询某一天按照5分钟为一段间隔通过高速门架的车流量。部分脱敏数据如下

表T里包含time,id,chepai,部分数据为(’2020-02-23 00:43:27','某高速门架0010','浙XXXXXX')

按照正常情况下我们的限定where条件是time >= '2020-02-23 0:00' and time < '2020-02-23 0:00'  或者 between等,但是这样来写一两个还行,要每隔5分钟切分一次,需要写二百多,过于麻烦

解决思路:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

SELECT t.time,

        t.id,

        COUNT(DISTINCT(t.chepai)) num

FROM

    (SELECT time,

        id,

        -- FROM_UNIXTIME把整型数字转为时间类型

        FROM_UNIXTIME(

            -- 一般年月日无需动,直接unix_timestamp先转为整型再加上时分秒即可

            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
相关文章
最新更新