SQL. Прмогите с написанием запроса
Предположим, вы открыли интернет-магазин и теперь хотите узнать, сколько времени проходит между каждым последующим продажами. У вас есть одна таблица журнала, в которой вы храните метку времени каждой совершенной вами продажи.
- Напишите запрос SQL, который покажет разницу во времени для каждой последующей продажи.
- Напишите запрос SQL, который покажет максимальную разницу во времени между двумя последовательными продажами.
Я написала так: но вот если я укажу MAX(DATEDIFF(second, timestamp, next_time)), то мне кажется так не заработает:
SELECT timestamp,
LEAD(timestamp) OVER(ORDER BY timestamp) next_time,
DATEDIFF(second, timestamp, next_time),
FROM log
Ответы (1 шт):
Для работы с оконными функциями желательно использовать СТЕ. В данном случае оно излишне, конечно, но лучше привыкайте пока всегда делать так.
WITh cte AS ( SELECT [timestamp],
LEAD([timestamp]) OVER (ORDER BY [timestamp]) next_time
FROM log )
SELECT [timestamp],
COALESCE(DATEDIFF(SECOND, [timestamp], next_time), 0) difference
FROM cte;
PS. Использовать зарезервированное слово в качестве имени поля - путь на поле с граблями.
PPS. Для вывода максимальной разницы нужно просто отсортировать по убыванию и взять первую запись.