2013-05-06 56 views
7

我有一個帶有時間字段的SQL數據庫。如何返回一個SQL時間字段的平均值

的運行時間字段包含02:06:24, 00:01:12等等

我試圖返回本場的平均在HH:MM:SS使用格式;

SELECT AVG(runtime) 
FROM `result` 

這將返回8312.2342729307我認爲是但是當轉換成分,這是不正確的秒的平均值。

我能夠以正確的格式返回MIN和MAX運行時,但無法獲得AVG,我該怎麼做?

失敗,有無論如何選擇中間元素作爲中位數平均使用?

+0

目前還不清楚您所使用的數據庫:MySQL的唯一?還是另一個? – Jocelyn 2013-05-06 14:04:19

+0

我不確定老實說,它的託管在http://www.numyspace.co.uk/phpmyadmin – 2013-05-06 14:18:41

+0

你認爲兩點和五點的平均值應該是多少?兩點和五點的*總和*應該是多少? – 2013-05-06 14:28:36

回答

2

不能使用AVG()函數針對DATETIME/TIME

我鑄造DATETIME到DECIMAL(18,6),這似乎得到一個合理的(+ - 幾毫秒)精確的結果。

SELECT cast(CAST(AVG(CAST(runtime AS DECIMAL(18, 6))) AS DATETIME) as time) 
FROM dbo.result; 
+0

它返回一行但是這是NULL – 2013-05-06 14:21:27

+0

快速測試表明'AVG()'將'01:30:00'視爲'13000',即使在嚴格模式下: - ?如果有人能找到說明他應該在這裏發佈的手冊頁。 – 2013-05-06 14:52:56

3

因此,通過圖示的方式...

SELECT SEC_TO_TIME((TIME_TO_SEC('02:06:24')+TIME_TO_SEC('00:01:12'))/2) x; 
+----------+ 
| x  | 
+----------+ 
| 01:03:48 | 
+----------+ 
+0

SELECT SEC_TO_TIME((TIME_TO_SEC('22:06:24')+ TIME_TO_SEC('00:01:12'))/ 2)x; 給我11:03:48.0000 ...這是錯誤的結果。正確的結果應該是23:XX ... – 2017-10-31 11:31:41

+0

@ApoorvaShah Your's與最初提出的問題不同。另外XX不是有效的時間。 – Strawberry 2017-10-31 12:02:16

+0

是XX表示第二個......我還沒有計算確切的平均值。 – 2017-10-31 12:17:15

相關問題