时间总和的划分

时间:2013-05-23 06:09:40

标签: mysql

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

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

TIME_TO_SEC(sum(q2.HOURS))result = 838:59:59 我想把它除以事件数= 160

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

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

3 个答案:

答案 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