我正在尝试从此查询中获取每个事件的平均小时数:
SEC_TO_TIME(sum(q2.HOURS))/sum(q2.Events)as Average
TIME_TO_SEC(sum(q2.HOURS))result = 838:59:59 我想把它除以事件数= 160
但查询没有给我预期的结果。
希望有人可以帮助我。 感谢
答案 0 :(得分:0)
试试这个解决方案 -
SEC_TO_TIME(SUM(q2.HOURS) * 3600 / SUM(q2.Events)) AS Average
它将以秒为单位计算平均值,并将输出结果计为TIME数据类型。
答案 1 :(得分:0)
在不知道q2.HOURS
列和样本数据的确切数据类型的情况下很难分辨,但如果它是时间数据类型(并且您的评论表明情况属实),那就这样做
SELECT SUM(TIME_TO_SEC(q2.hours)) / 3600 / SUM(q2.events) average
FROM
(
SELECT '10:30:00' hours, 3 events
UNION ALL
SELECT '04:30:00', 2
) q2
输出: 15小时(10:30:00 + 04:30:00)= / 5个事件=每个活动3个小时
| AVERAGE |
-----------
| 3 |
<强> SQLFiddle 强>
答案 2 :(得分:-2)
尝试将整个分区放在SEC_TO_TIME
中的括号内,假设q2.Hours存储整数值:
SEC_TO_TIME(sum(q2.HOURS)/sum(q2.Events)) as Average
如果q2.Hours存储时间值,则必须先使用TIME_TO_SEC
将时间转换为整数,然后除以事件总和,然后再将其转换回时间格式:
SEC_TO_TIME(TIME_TO_SEC(sum(q2.HOURS))/sum(q2.Events)) as Average