SQL. Прмогите с написанием запроса

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

  1. Напишите запрос SQL, который покажет разницу во времени для каждой последующей продажи.
  2. Напишите запрос 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 шт):

Автор решения: Akina

Для работы с оконными функциями желательно использовать СТЕ. В данном случае оно излишне, конечно, но лучше привыкайте пока всегда делать так.

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. Для вывода максимальной разницы нужно просто отсортировать по убыванию и взять первую запись.

→ Ссылка