我试图创建一个查询来总结按用户分组的时间,结果应该是几分钟。
表的内容: duration user
00:06:00 user1
00:06:00 user2
00:04:00 user3
00:01:00 user55
00:02:00 user1
00:01:00 user2
00:01:00 user55
预期结果:
duration user
8 user1
7 user2
4 user3
2 user55
这离我越近越近:
SELECT user, SEC_TO_TIME( SUM( TIME_TO_SEC(
{持续时间{1}}
然而,这会将结果输出为000:00:00,在某些情况下,结束于838:59:59。
非常感谢任何帮助。
答案 0 :(得分:3)
mysql> SELECT MINUTE(SEC_TO_TIME(SUM(TIME_TO_SEC( duration))))
as tt ,user from tt group by user;
+------+--------+
| tt | user |
+------+--------+
| 8 | user1 |
| 7 | user2 |
| 4 | user3 |
| 2 | user55 |
+------+--------+
4 rows in set (0.00 sec)
答案 1 :(得分:1)
TIME_TO_SEC
只会转换时间段,因此如果时钟超过午夜,您最终会产生大的负片。使用UNIX_TIMESTAMP
来代替总和。同样SEC_TO_TIME
最大值大于3020399秒,例如SELECT TIME_TO_SEC(SEC_TO_TIME(3020400));
如果您看到此值838:59:59您已达到最大值,可能只需要除以3600即可显示小时数。