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