2013-05-10 109 views
1

我有一個MySQL表「totolog」:如何計算線條之間的平均時差?

id dt     data 
1 2013-05-01 06:01:01 hi john 
2 2013-05-01 06:04:23 hi bob 
3 2013-05-01 07:17:36 hi alex 
4 2013-05-01 14:49:41 hi all 

我怎樣才能檢索到線之間的平均時間差?

我懷疑這樣的事情:

SELECT UNKNOW_FUNCTION(dt) FROM totolog ORDER BY dt ASC; 

回答

1

的平均時間爲time_max - time_min/number_of_records

SELECT (max(dt) - min(dt))/count(dt) as avg_dt 
FROM totolog 
ORDER BY avg_dt ASC; 
+0

+1,作爲一個天才:) – Aquillo 2013-05-10 10:03:11

+0

哦男人!也許我現在得睡一會兒:) – cyrianox 2013-05-10 10:14:35

+0

是的,這聽起來不太合適。 – Strawberry 2013-05-10 11:29:40

1

鑑於這樣的數據集...

CREATE TABLE totolog 
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
,dt     DATETIME NOT NULL 
,data VARCHAR(20) NOT NULL 
); 

INSERT INTO totolog VALUES 
(1 ,'2012-12-01 06:01:01','hi john'), 
(2 ,'2013-01-01 06:04:23','hi bob'), 
(3 ,'2013-02-01 07:17:36','hi alex'), 
(4 ,'2013-03-28 14:49:41','hi all'); 

我想像你'd想要這樣的東西...

SELECT FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(dt)))x FROM totolog; 
+---------------------+ 
| x     | 
+---------------------+ 
| 2013-01-22 20:33:10 | 
+---------------------+ 
1 row in set (0.00 sec) 

...或...這

SELECT FROM_UNIXTIME((MAX(UNIX_TIMESTAMP(dt))+MIN(UNIX_TIMESTAMP(dt)))/2)x 
    FROM totolog; 
+---------------------+ 
| x     | 
+---------------------+ 
| 2013-01-28 22:25:21 | 
+---------------------+ 
1 row in set (0.00 sec)