我有一個名爲Sessions和兩個日期時間列的表:開始和結束。MySQL:求平均時差?
對於每一天(YYYY-MM-DD),可以有許多不同的開始和結束時間(HH:ii:ss)。我需要找到這些開始和結束時間之間所有差異的日平均值。
幾排的一個例子是:
start: 2010-04-10 12:30:00 end: 2010-04-10 12:30:50
start: 2010-04-10 13:20:00 end: 2010-04-10 13:21:00
start: 2010-04-10 14:10:00 end: 2010-04-10 14:15:00
start: 2010-04-10 15:45:00 end: 2010-04-10 15:45:05
start: 2010-05-10 09:12:00 end: 2010-05-10 09:13:12
...
爲2010-04-10的時間差(秒)將是:
50
60
300
5
平均爲2010-04- 10將是103.75秒。我想我的查詢返回的東西,如:
day: 2010-04-10 ave: 103.75
day: 2010-05-10 ave: 72
...
我可以通過開始日期分組的時間差,但我不知道怎麼去平均值。我試過使用AVG函數,但我認爲它只能直接用於列值(而不是另一個聚合函數的結果)。
這是我有:
SELECT
TIME_TO_SEC(TIMEDIFF(end,start)) AS timediff
FROM
Sessions
GROUP BY
DATE(start)
有沒有辦法讓timeDiff測量平均每個開始日期組?我是新來的聚合函數,所以也許我誤解了一些東西。如果您知道備用解決方案,請分享。
我可以隨時做到ad hoc,並在PHP中手動計算平均值,但我想知道是否有辦法在MySQL中這樣做,這樣我就可以避免運行一堆循環。
謝謝。
對,就是這樣,我一發現問題就意識到了。我覺得有點傻。我無法實現它的原因是我在做AVG(timediff),我想你需要直接傳遞表達式並且不能使用別名。謝謝。 – nebs 2010-04-27 14:57:41