0

我正在尝试从此查询中获取每个事件的平均小时数:

 SEC_TO_TIME(sum(q2.HOURS))/sum(q2.Events)as Average 

TIME_TO_SEC(sum(q2.HOURS)) 结果 = 838:59:59 我想除以事件数 = 160

但查询并没有给我预期的结果。

希望可以有人帮帮我。谢谢

4

3 回答 3

0

试试这个解决方案 -

SEC_TO_TIME(SUM(q2.HOURS) * 3600 / SUM(q2.Events)) AS Average 

它将以秒为单位计算平均值,并将结果输出为 TIME 数据类型。

于 2013-05-23T06:19:47.247 回答
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

于 2013-05-23T21:08:50.847 回答
-2

假设 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 
于 2013-05-23T06:16:59.603 回答