【发布时间】:2018-11-20 11:53:13
【问题描述】:
我有时间以 unix 格式 int 存储。我想按 1 天即 86400 秒的间隔对结果进行分组。
样本数据
timestamp | state
+++++++++++++++++++
1540427604 | ABC
1540770300 | PQR
1540770050 | PQR
1540751300 | ABC
我想按每个 86400 的周期对 state 的计数进行分组,即如果有人问从 1540425600(即 2018 年 10 月 25 日)到 1540771200(即 2018 年 10 月 29 日),那么输出应该是
range | state | count
++++++++++++++++++++++++++++++++++++++++++
1540425600 - 1540512000 | ABC | 1
1540684800 - 1540771200 | ABC | 1
1540684800 - 1540771200 | PQR | 2
我已经尝试了很多东西,但我认为这个更接近..
select
concat(86400*floor(timestamp /86400), '-', 86400*floor(timestamp/86400) + 86400) as `range` , count(state)
from MT
where timestamp between MINDATE AND MAXDATE
group by `range` order by `range`;
但是我得到的输出不是以传递的 MINDATE 或 MINDATE 的倍数开头...但它在 86400 的范围内。我希望范围应始终以 mMINDATE 开头,如果这样的记录存在或以多个头脑 * 86400
请帮忙。
【问题讨论】:
标签: mysql sql database group-by relational-database