2013-02-15 72 views
7

所以說我們有3個字段,username, start_date, end_date兩個日期之間的平均差異,按第三個字段分組?

用戶啓動和停止多條記錄,例如下面bob已經啓動和停止兩條記錄。

bob 1/2/13 11:00 1/2/13 13:00 
jack 1/2/13 15:00 1/2/13 18:00 
bob 2/2/13 14:00 1/2/13 19:00 

我需要知道花費的平均時間(即起點和終點之間的差異),以小時爲單位,爲每個用戶(即組由用戶,而不是僅僅爲每行)。

我不知道如何做差異,平均和組?任何幫助?

回答

9

您不指定diff所需的粒度。這確實是在天:

select username, avg(end_date - start_date) as avg_days 
from mytable 
group by username 

如果你想要在幾秒鐘之差,使用datediff()

select username, avg(datediff(ss, start_date, end_date)) as avg_seconds 
... 

DATEDIFF可以測量任何時間單位了DIFF多年通過改變第一個參數,這可以是ss,mi,hh,dd,wk,mm或yy。

+0

日期 - 日期返回天差IIRC – Viehzeug 2013-02-15 13:28:50

+0

@Viehzeug加入溶液秒 – Bohemian 2013-02-15 13:31:56

+0

哇,好,簡單的比我想象。猜猜我的腦子比想象的要複雜得多。 – 2013-02-15 13:43:57

2
SELECT username, AVG(TIMESTAMPDIFF(HOUR, start_date, end_date)) 
FROM table 
GROUP BY username 
+0

非常感謝您的幫助。不幸的是我不能選擇兩個答案。 – 2013-02-15 13:44:53