我想从某些ID分组的几行中选择持续时间。该行包含时间(00:04:25),(00:05:25),(12:04:25)(小时,分钟,秒)等。我如何总结这些行并将总持续时间返回为天,小时, 分钟 ? 我所做的是这个(实际上它不是我,我看到它在这里计算器等后)Mysql SUM两次并将总持续时间返回为天,小时,分钟
$sql = 'SELECT r.*,d.*, CONCAT(
FLOOR(HOUR(SEC_TO_TIME(SUM(TIME_TO_SEC(r.duration))))/24), "' . $this- >_translator->translate(' days ') . '",
MOD(HOUR(SEC_TO_TIME(SUM(TIME_TO_SEC(r.duration)))), 24), "' . $this->_translator->translate(' hours ') . '",
MINUTE(SEC_TO_TIME(SUM(TIME_TO_SEC(r.duration)))), "' . $this->_translator->translate(' minutes ') . '") as total_duration,
ROUND(SUM(TIME_TO_SEC(r.duration)/3600)) as total_duration_hours FROM routes r LEFT JOIN drivers d ON d.id = r.driver_id GROUP BY r.driver_id';
这是由工作不正常。在r。*中还存储了平均速度,距离,例如这段代码返回2小时23分钟,当它返回2小时30分钟。请帮忙。谢谢 !
编辑: 下面是一些数据:
Full texts id filename distance startRoute endRoute duration avgSpeed car_id fromLocation toLocation driver_id
Edit Edit Copy Copy Delete Delete 748 GPSdata20140109073948 5.74 2014-01-09 07:40:23 2014-01-09 07:50:38 00:10:15 33.6 20 22, Ulhaus, Langerwehe 27, Königsbenden, Eschweiler 18
Edit Edit Copy Copy Delete Delete 754 GPSdata20140110182521 1.43 2014-01-10 18:25:26 2014-01-10 18:29:31 00:04:05 21.01 18 36, Grüner Weg, Aachen 3, Rehmplatz, Aachen 18
Edit Edit Copy Copy Delete Delete 758 GPSdata20140112145245 70.55 2014-01-12 14:54:05 2014-01-12 16:54:42 02:00:37 35.09 23 275, Hauptstraße, Langerwehe , Pescher Weg, Cologne 18
Edit Edit Copy Copy Delete Delete 759 GPSdata20140113072802 6.17 2014-01-13 07:28:37 2014-01-13 07:37:02 00:08:25 43.98 19 13, Bahnhofstraße, Langerwehe 27, Königsbenden, Eschweiler 18
5.74 + 1.43 + 70.55 + 6.17 = 83.9距离 33.6 + 21.01 + 35.09 + 43.98 = 33.42平均速度 所以距离/平均速度=2小时和30分钟,我得到2小时23分钟。我在哪里做错了?
你想在mysql操作中进行所有操作吗? – rpirez 2014-10-01 09:39:42
你能提供创建表语句和一些数据吗? – nicolas 2014-10-01 09:44:24
除非组内的内容完全相同,否则不应在GROUP BY中使用未聚合的表达式。我认为关于持续时间的计算没有问题。 – 2014-10-01 11:07:44