8

我有一个带有时间字段的 sql 数据库。

运行时间字段包含02:06:24, 00:01:12等...

我正在尝试使用 HH:MM:SS 格式返回该字段的平均值;

SELECT AVG( runtime )
FROM `result`

我认为这8312.2342729307是以秒为单位的平均值,但是当转换为分钟时,这是不正确的。

我能够以正确的格式返回 MIN 和 MAX 运行时,但无法获得 AVG,我该怎么做?

无论如何都没有选择中间元素用作中位数平均值?

4

2 回答 2

3

因此,通过说明...

SELECT SEC_TO_TIME((TIME_TO_SEC('02:06:24')+TIME_TO_SEC('00:01:12'))/2) x;
+----------+
| x        |
+----------+
| 01:03:48 |
+----------+
于 2013-05-06T14:25:53.033 回答
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;
于 2013-05-06T14:06:25.193 回答