diff --git a/aysat/lifecoding/SQL2.sql b/aysat/lifecoding/SQL2.sql index 96c4aeb..78c58ec 100644 --- a/aysat/lifecoding/SQL2.sql +++ b/aysat/lifecoding/SQL2.sql @@ -1,23 +1,48 @@ +''' +Требуется написать SQL-запрос, который будет находить ошибки в версионности по ключу employee_id, такие как «дыры» в истории и пересечение версий. +Результатом запроса является список пар employee_id и from_dt, в которых есть ошибка. +Для каждой пары вывести тип ошибки. + +Salary + +Employee_id Salary_amt From_dt To_dt +1 50 000.000 01.01.2019 01.02.2019 +1 70 000.000 01.04.2019 01.01.9999 +2 70 000.000 01.01.2019 01.05.2019 +2 90 000.000 01.03.2019 01.01.9999 +3 45 000.000 01.01.2019 01.01.9999 + +''' + with base as ( -select -employee_id, -to_dt, -from_dt, -lag(to_dt) over (partition by employee_id order by from_dt) lag_to_dt -from abakhytbekuly.salary + select + employee_id, + to_dt, + from_dt, + lag(to_dt) over (partition by employee_id order by from_dt) as lag_to_dt +from + abakhytbekuly.salary ), error as ( -select -employee_id, -from_dt, -case when - lag_to_dt > from_dt then 'пересечение' - when - lag_to_dt < from_dt then 'дыра' - end as status -from base -where lag_to_dt is not null + select + employee_id, + from_dt, + case when + lag_to_dt > from_dt then 'пересечение' + when + lag_to_dt < from_dt then 'дыра' + end + as status + from + base + where + lag_to_dt is not null ) -select * -from error -order by employee_id, from_dt \ No newline at end of file +select +* +from + error +order by + employee_id, from_dt + + \ No newline at end of file