我有一个带时间字段的SQL数据库。
运行时间字段包含02:06:24, 00:01:12
等...
我试图使用;
以HH:MM:SS格式返回此字段的平均值SELECT AVG( runtime )
FROM `result`
这会返回8312.2342729307
我认为是以秒为单位的平均值,但是当转换为分钟时,这是不正确的。
我能够以正确的格式返回MIN和MAX运行时但无法获取AVG,我该怎么做?
无论如何都没有选择中间元素作为中位数平均值?
答案 0 :(得分:3)
所以,举例说明......
SELECT SEC_TO_TIME((TIME_TO_SEC('02:06:24')+TIME_TO_SEC('00:01:12'))/2) x;
+----------+
| x |
+----------+
| 01:03:48 |
+----------+
答案 1 :(得分:2)
您无法对DATETIME / TIME
使用AVG()函数我正在将DATETIME转换为DECIMAL(18,6),这似乎可以产生合理的(+ - 几毫秒)精确结果。
SELECT cast(CAST( AVG( CAST( runtime AS DECIMAL( 18, 6 ) ) ) AS DATETIME ) as time)
FROM dbo.result;