Среднее время между двумя заказами
У меня есть таблица данных заказа для клиентов, и я хочу узнать среднюю. количество дней, необходимое клиенту для совершения второй транзакции, после первого выполнения, # дней для перехода со второго на третье и т. д. Пример таблицы:
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