2013-04-25 81 views
4

得到的服務請求的平均間隔時間我有部分下的MySQL架構通過時間戳

ServiceRequests 
---------- 
id int 
RequestDateTime datetime 

這是一個記錄的典型集合可能是什麼樣子。

1 | 2009-10-11 14:34:22 
2 | 2009-10-11 14:34:56 
3 | 2009-10-11 14:35:01 

在這種情況下的平均請求時間是(34 + 5)/ 2 =19.5秒,是

14:34:22 ---> (34 seconds) ----> 14:34:56 ------> (5 seconds) -----> 14:35:01 

基本上我需要解決在連續記錄之間的時間,該差,總和按記錄數除以。

我能想到的最接近的事情就是將時間戳轉換爲紀元時間並從那裏開始。如果需要,我可以在表格中添加一個字段以預先計算時間。

如何使用sql語句確定19.5?

+1

一個美麗的開始是展示到目前爲止 – Bryan 2013-04-25 19:46:25

+0

不要在時間順序連續記錄總是有連續的,你已經嘗試了查詢標識? – Barmar 2013-04-25 19:50:38

+0

id字段是自動增量的,但有時該表部分被清除,所以記錄不總是n + 1。即通常它們看起來像1,2,4,7,8,9,367,368。我有這個python代碼,但我想在sql中完成,所以我沒有任何顯示? – 2013-04-26 06:33:58

回答

2

你並不需要知道每條記錄的時間差來獲得平均值。您有x個數據點,範圍從t0到t1。 請注意,the last time - first time也是39秒。(max-min)/(count-1)應該

select max(RequestDateTime)-min(RequestDateTime)/(count(id)-1) from ServiceRequests; 

你注意工作:如果表是空的,由於零一分頻,這樣是行不通的。

注2:不同的數據庫處理不同的日期減法,因此您可能需要將該差異轉換爲秒。

提示:也許使用TIMEDIFF(表達式1,表達式2)和/或TIME_TO_SEC(表達式3)

+0

謝謝!我想我是在某個地方過度設計的,因爲現在我的要求確實和你的答案一樣簡單。 – 2013-04-26 13:18:11