[스파르타코딩클럽]데이터분석 과정/SQL
[SQL 코드카타] 113 ~ 115번 (LeetCode)
doo_
2024. 1. 19. 11:17
113번 employees-whose-manager-left-the-company
select
employee_id
from
employees
where
salary < 30000 -- 1) less than
and manager_id not in (select employee_id -- 2) not in employee_id
from employees)
order by
employee_id
> join을 활용한 해답
SELECT
e1.employee_id
FROM -- 1) left 조인
Employees e1
LEFT JOIN Employees e2
ON e1.manager_id = e2.employee_id
WHERE
e1.salary < 30000 -- 2) 조건 1
AND e1.manager_id IS NOT NULL 3) 우선 manager가 아닌 employee_id는 제외
AND e2.employee_id IS NULL 4) 매니저 id에는 있지만 employee_id는 없는
ORDER BY
employee_id;
114번 exchange-seats
select
case when id % 2 = 0 then id - 1 -- 1) 짝수면 id -1
when id = (select count(*) from seat) then id -- 2) 홀수이면서 마지막 id일 때는 id
else id + 1 -- 3) 그리고 나머지 홀수는 id + 1
end as id,
student
from
seat
order by
1;
115번 movie-rating
(select
us.name as results
from
movierating mr
join users us
on mr.user_id = us.user_id
group by
mr.user_id
order by
count(mr.rating) desc, us.name asc
limit 1)
union all
(select
mo.title as results
from
movierating mr
join movies mo
on mr.movie_id = mo.movie_id
where
date_format(created_at, '%Y-%m') = '2020-02'
group by
mo.movie_id
order by
avg(mr.rating) desc, mo.title asc
limit 1)