我的表记录如下:
id startFrom endOn gateway broadcast
1 2018-09-01T23:41:24:024 2018-09-01T23:45:24:028 A X01
2 2018-09-01T23:41:24:025 2018-09-01T23:45:24:032 A X01
3 2018-09-01T23:41:24:026 2018-09-01T23:45:24:028 B X01
4 2018-09-01T23:41:24:030 2018-09-01T23:45:24:045 C X01
5 2018-09-01T22:41:24:029 2018-09-01T23:41:24:784 B X02
6 2018-09-01T23:41:24:025 2018-09-01T23:45:24:038 A X01
如果我想使用单个查询来查找特定广播中每个网关中的第一个请求时间段。如何使用MySQL对其进行分组查询?
失败:
SELECT gateway, TIMESTAMPDIFF(MICROSECOND, `startFrom`, `endOn`) AS `timeDiff` FROM Records WHERE broadcast = 'X01' GROUP BY gateway
如果我尝试制作一个临时表,例如:
SELECT gateway, MIN(timeDiff)
FROM (SELECT TIMESTAMPDIFF(MICROSECOND, `startFrom`, `endOn`) AS `timeDiff`, gateway, broadcast FROM Records) t
WHERE broadcast = 'X01'
GROUP BY gateway;
它只能从该广播中每个网关的记录中获取最小时间差异,但我必须查询“第一条记录”(=> ORDER BY startFrom ASC)时间差异。
目标输出是:
gateway startFrom endOn timeDiff
A 2018-09-01T23:41:24:024 2018-09-01T23:45:24:028 4000
B 2018-09-01T23:41:24:026 2018-09-01T23:45:24:028 2000
C 2018-09-01T23:41:24:030 2018-09-01T23:45:24:045 15000
感谢您的阅读和帮助
最佳答案
从记录中选择*;
+----+---------------------+---------------------+ --------+------------+
|编号 |开始于 |结束 |网关|广播|
+----+---------------------+---------------------+ --------+------------+
| 1 | 2018-09-17 05:23:53 | 2018-09-17 06:23:53 |一个 | X01 |
| 2 | 2018-09-17 05:24:08 | 2018-09-17 06:24:08 |一个 | X01 |
| 3 | 2018-09-17 05:24:25 | 2018-09-17 06:24:25 |乙| X01 |
| 4 | 2018-09-17 05:24:32 | 2018-09-17 06:24:32 | C | X01 |
| 5 | 2018-09-17 05:24:42 | 2018-09-17 07:24:42 |乙| X02 |
+----+---------------------+---------------------+ ---------+------------+
这是您正在寻找的查询吗..
从网关 asc 的记录组中选择 gateway,startFrom,endOn,time_to_sec(timediff(endOn,startFrom)) 作为 timeDiff ;
+---------+--------------------+----------------- ----+----------+
|网关|开始于 |结束 |时间差 |
+---------+--------------------+----------------- ----+----------+
|一个 | 2018-09-17 05:23:53 | 2018-09-17 06:23:53 | 3600 |
|乙| 2018-09-17 05:24:25 | 2018-09-17 06:24:25 | 3600 |
| C | 2018-09-17 05:24:32 | 2018-09-17 06:24:32 | 3600 |
+---------+--------------------+----------------- ---+----------+
关于MySQL 分组依据与时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52360997/