Среднее время между двумя заказами

У меня есть таблица данных заказа для клиентов, и я хочу узнать среднюю. количество дней, необходимое клиенту для совершения второй транзакции, после первого выполнения, # дней для перехода со второго на третье и т. д. Пример таблицы:

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

Спасибо в адвакне

1 ответ

Возьмите первую дату, а затем сравните каждую дату с предыдущей:

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
Другие вопросы по тегам