Data/SQL
[SQL] Leetcode/HackerRank 코딩테스트 연습 1
쿡국
2024. 3. 4. 15:55
문제1. Managers with at Least 5 Direct Reports
출처 : Leetcode - Medium
정답 쿼리
select name
from employee
where id in (select managerID
from employee
group by managerID
having count(*)>=5)
문제 해설
1. 주요 포인트 1 - where절 서브쿼리
where id in (select managerID
from employee
group by managerID
having count(*)>=5)
where 절에 서브쿼리 사용 → managerID 칼럼에 ID가 5개 이상 있다면 5명 이상의 employee를 관리하고 있다는 뜻.
문제 2. ROOT 아이템 구하기
출처 : The Report
https://www.hackerrank.com/challenges/the-report/problem?isFullScreen=true
정답 쿼리
select
(case when b.grade < 8 then null
else a.name
end) as name,
b.grade, a.marks
from students a
join grades b
on a.marks between b.min_mark and b.max_mark
order by grade desc, name, marks
문제 해설
—> ITEM_TREE 테이블에서 PARENT_ITEM_ID가 NULL인 ITEM_ID와 ITEM_NAME을 출력해라.
1. 주요 포인트 1 - case when then 구문
select
(case when b.grade < 8 then null
else a.name
end) as name,
case when then 구문을 사용하여 등급이 8보다 낮을 경우 null로, 8이상일 경우 해당 학생의 이름을 출력.
2. 주요 포인트 2 - between 조인
from students a
join grades b
on a.marks between b.min_mark and b.max_mark
조인할 때 흔히 사용하던 ‘기본키=외래키’ 구조가 아님. 주어진 점수 범주에 따라 등급이 책정되므로 between을 사용.