by mysql 按每分钟group_MySQL group by 统计每5分钟数据量
需求
有打卡記錄表結(jié)構(gòu)如下
ID
user_id (int)
create_time (int)1
123
1603209599
現(xiàn)需要統(tǒng)計(jì)每5分鐘的記錄數(shù)量,按記錄數(shù)量降序排列
分析
關(guān)鍵在于怎么把create_time按每5分鐘分組,可以使用取模 % 實(shí)現(xiàn)
舉例
現(xiàn)有時(shí)間戳 1 - 10 秒,每5秒分一組
首先對(duì)每秒跟5取模,結(jié)果如下
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
6 % 5 = 1
7 % 5 = 2
8 % 5 = 3
9 % 5 = 4
10 % 5 = 0
然后使用對(duì)應(yīng)的秒數(shù)減去取模后的結(jié)果如下
1 - 1 % 5 # 0
2 - 2 % 5 # 0
3 - 3 % 5 # 0
4 - 4 % 5 # 0
5 - 5 % 5 # 5
6 - 6 % 5 # 5
7 - 7 % 5 # 5
8 - 8 % 5 # 5
9 - 9 % 5 # 5
10 - 10 % 5 # 10
沒(méi)發(fā)現(xiàn)規(guī)律,那么把秒數(shù)增加到20秒
11 - 11 % 5; # 10
12 - 12 % 5; # 10
13 - 13 % 5; # 10
14 - 14 % 5; # 10
15 - 15 % 5; # 15
16 - 16 % 5; # 15
17 - 17 % 5; # 15
18 - 18 % 5; # 15
19 - 19 % 5; # 15
20 - 20 % 5; # 20
改寫(xiě)下公式
concat(create_time - create_time % 5, '~', create_time - create_time % 5 + 5)
最終計(jì)算的結(jié)果結(jié)果如下
SELECT 1 - 1 % 5; # 0 (0 ~ 5)
SELECT 2 - 2 % 5; # 0 (0 ~ 5)
SELECT 3 - 3 % 5; # 0 (0 ~ 5)
SELECT 4 - 4 % 5; # 0 (0 ~ 5)
SELECT 5 - 5 % 5; # 5 (5 ~ 10)
SELECT 6 - 6 % 5; # 5 (5 ~ 10)
SELECT 7 - 7 % 5; # 5 (5 ~ 10)
SELECT 8 - 8 % 5; # 5 (5 ~ 10)
SELECT 9 - 9 % 5; # 5 (5 ~ 10)
SELECT 10 - 10 % 5; # 10 (10 ~ 15)
SELECT 11 - 11 % 5; # 10 (10 ~ 15)
SELECT 12 - 12 % 5; # 10 (10 ~ 15)
SELECT 13 - 13 % 5; # 10 (10 ~ 15)
SELECT 14 - 14 % 5; # 10 (10 ~ 15)
SELECT 15 - 15 % 5; # 15 (15 ~ 20)
SELECT 16 - 16 % 5; # 15 (15 ~ 20)
SELECT 17 - 17 % 5; # 15 (15 ~ 20)
SELECT 18 - 18 % 5; # 15 (15 ~ 20)
SELECT 19 - 19 % 5; # 15 (15 ~ 20)
SELECT 20 - 20 % 5; # 20 (20 ~ 25)
如此便能實(shí)現(xiàn)每5秒分到一組,要實(shí)現(xiàn)需求的每5分鐘分組,只需要把5改成300,最終的SQL如下
select
concat(from_unixtime(create_time - create_time % 300), ' ~ ', from_unixtime(create_time - create_time % 300 + 300)) as period,
count(1) as record_count
from 打卡日志表
WHERE create_time BETWEEN 1603123200 and 1603209599
group by period
order by record_count DESC;
總結(jié)
以上是生活随笔為你收集整理的by mysql 按每分钟group_MySQL group by 统计每5分钟数据量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c++美发店管理系统设计_急求一份美发店
- 下一篇: 我国5G应用需向规模化发展