在一个时间范围内分组为5分钟的间隔

在一个时间范围内分组为5分钟的间隔

我想要做的mySQL命令有些困难。


SELECT a.timestamp, name, count(b.name) 

FROM time a, id b 

WHERE a.user = b.user

  AND a.id = b.id

  AND b.name = 'John'

  AND a.timestamp BETWEEN '2010-11-16 10:30:00' AND '2010-11-16 11:00:00' 

GROUP BY a.timestamp

这是我目前的输出声明。


timestamp            name  count(b.name)

-------------------  ----  -------------

2010-11-16 10:32:22  John  2

2010-11-16 10:35:12  John  7

2010-11-16 10:36:34  John  1

2010-11-16 10:37:45  John  2

2010-11-16 10:48:26  John  8

2010-11-16 10:55:00  John  9

2010-11-16 10:58:08  John  2

如何将它们分组为5分钟的间隔结果?


我希望我的输出像


timestamp            name  count(b.name)

-------------------  ----  -------------

2010-11-16 10:30:00  John  2

2010-11-16 10:35:00  John  10

2010-11-16 10:40:00  John  0

2010-11-16 10:45:00  John  8

2010-11-16 10:50:00  John  0

2010-11-16 10:55:00  John  11 


米脂
浏览 665回答 3
3回答

米琪卡哇伊

这适用于每个间隔。PostgreSQL的SELECT     TIMESTAMP WITH TIME ZONE 'epoch' +     INTERVAL '1 second' * round(extract('epoch' from timestamp) / 300) * 300 as timestamp,     name,     count(b.name)FROM time a, id WHERE …GROUP BY round(extract('epoch' from timestamp) / 300), nameMySQL的SELECT     timestamp,  -- not sure about that     name,     count(b.name)FROM time a, id WHERE …GROUP BY UNIX_TIMESTAMP(timestamp) DIV 300, name

大话西游666

您应该使用GROUP BY UNIX_TIMESTAMP(time_stamp) DIV 300而不是round(../ 300),因为舍入我发现一些记录被计入两个分组结果集。
打开App,查看更多内容
随时随地看视频慕课网APP