SQL-Academy / ru.sql-academy

Курс по SQL
https://sql-academy.org/ru/guide
40 stars 21 forks source link

Некорректное условие задания для самопроверки (раздел "Типы оконных функций", задание 2) #14

Closed nemirolyubova closed 8 months ago

nemirolyubova commented 8 months ago

В условии задачи требуется дополнить имеющийся запрос так, чтобы выводилось в числе всего прочего время, прошедшее с предыдущего вылета. Чтобы запрос работал, необходимо при вычислении разницы во времени использовать LAG для обращения к данным из предыдущих строк, благодаря чему и будет вычисляться время, прошедшее с предыдущего вылета. Однако предложенный в задаче запрос содержит функцию FIRST_VALUE, которая при вычислении разницы во времени будет обращаться к первой строке, и TIMEDIFF с этой функцией таким образом всегда будет показывать разницу между временем текущего вылета и временем самого первого вылета, что в контексте этой задачи не имеет смысла. Получается, что предложенный запрос нужно не только дополнить, как требуется в условии задачи, но и исправить (заменить одну функцию на другую), это может сбить с толку, поскольку ранее в подобных задачах нужно было только дополнять имеющийся запрос, не исправляя то, что уже дано.

P.S. Могу добавить своё решение этой задачи с исправленным запросом с функцией LAG, который оценивается системой как корректный, если это не будет спойлером для других.

NepeinAV commented 8 months ago

Здравствуйте! Предложенный в задании запрос нужно именно дополнить, а не изменить. Для этого внутри OVER достаточно указать корректные PARTITION BY, ORDER BY, а также ROWS (нужно взять предыдущую и текущую). При этом заменять FIRST_VALUE на LAG не нужно