我正在尝试从此查询中获取每个事件的平均小时数:
SEC_TO_TIME(sum(q2.HOURS))/sum(q2.Events)as Average
TIME_TO_SEC(sum(q2.HOURS)) 结果 = 838:59:59 我想除以事件数 = 160
但查询并没有给我预期的结果。
希望可以有人帮帮我。谢谢
我正在尝试从此查询中获取每个事件的平均小时数:
SEC_TO_TIME(sum(q2.HOURS))/sum(q2.Events)as Average
TIME_TO_SEC(sum(q2.HOURS)) 结果 = 838:59:59 我想除以事件数 = 160
但查询并没有给我预期的结果。
希望可以有人帮帮我。谢谢
试试这个解决方案 -
SEC_TO_TIME(SUM(q2.HOURS) * 3600 / SUM(q2.Events)) AS Average
它将以秒为单位计算平均值,并将结果输出为 TIME 数据类型。
好吧,如果不知道列和示例数据的确切数据类型,很难判断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 |
假设 q2.Hours 存储一个整数值,请尝试将整个除法放在括号内SEC_TO_TIME
:
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