2017-09-04 54 views
0

我已經爲客戶訂購了數據表,並且想知道平均數。客戶進行第二次交易所需的天數,第一次,第二天從第二次到第三次,等等。示例表:兩次訂單之間的平均時間

User ID Rank Time 
111  1 01/08/17 
111  2 05/08/17 
111  3 08/08/17 
111  4 10/08/17 
111  5 15/08/17 
111  6 20/08/17 
112  1 07/08/17 
112  2 08/08/17 
112  3 09/08/17 
112  4 10/08/17 

感謝advacne

+0

你能否也向我們展示了預期的結果?此外,你有沒有嘗試過解決這個問題? –

+0

因此,你期望兩行你將有'時間'值之間的平均天數?你正在使用哪個DBMS? –

回答

0

在第一個日期,然後比較每個日期與前一個:

set @d := (select date from yourTable where userid=111 and rank=1); 

select rank, datediff(date, @d), @d:=date FROM yourTable; 

你會得到這樣的事情:

1 0 2017-08-01 
2 4 2017-08-05 
3 3 2017-08-08 
4 3 2017-08-11 
5 6 2017-08-17 

然後只是對您的查詢做一個小的添加:

set @d := (select date from yourTable where userid=111 and rank=1); 

select avg(days) from 
    (select rank, datediff(date, @d) days, @d:=date FROM yourTable) td; 

其結果將是:

avg(days) 
3.2000