다음과 같은 직원(employees) 테이블과 부서(departments) 테이블이 있습니다.
- employees 테이블
id, department_id, name
1 | 101 | 르탄이 |
2 | 102 | 배캠이 |
3 | 103 | 구구이 |
4 | 101 | 이션이 |
- departments 테이블
id, name
101 | 인사팀 |
102 | 마케팅팀 |
103 | 기술팀 |
- 현재 존재하고 있는 총 부서의 수를 구하는 쿼리를 작성해주세요!
- 모든 직원과 그들이 속한 부서의 이름을 나열하는 쿼리를 작성해주세요!
- '기술팀' 부서에 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
- 부서별로 직원 수를 계산하는 쿼리를 작성해주세요!
- 직원이 없는 부서의 이름을 찾는 쿼리를 작성해주세요!
- '마케팅팀' 부서에만 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
A1.
SELECT COUNT(DISTINCT de.*) cnt
FROM departments de
JOIN employees e
ON e.id = de.department_id;
A2.
SELECT e.name, d.name
FROM departments d
JOIN employees e
ON d.id = e.department_id;
A3.
SELECT e.name
FROM employees e
JOIN departments d
ON e.department_id = d.id
WHERE d.name = '기술팀';
A4.
SELECT d.name '부서이름', COUNT(*) '직원수'
FROM employees e
JOIN departments d
ON e.department_id = d.id
GROUP BY d.name;
A5.
SELECT d.name '부서이름'
FROM departments d
LEFT JOIN employees e
ON d.id = e.department_id
WHERE e.id IS NULL;
A6.
SELECT e.name '직원이름'
FROM employees e
JOIN departments d
ON e.department_id = d.id
WHERE d.name = '마케팅팀'
AND NOT EXISTS (
SELECT 1
FROM employees e2
JOIN departments d2
ON e2.department_id = d2.id
WHERE e2.id = e.id
AND d2.name != '마케팅팀'
);
'SQL연습문제' 카테고리의 다른 글
마지막 연습 문제 ! (0) | 2024.08.29 |
---|---|
9)아프면 안됩니다! 항상 건강 챙기세요! (0) | 2024.08.28 |
8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다. (0) | 2024.08.28 |
7) 랭크게임 하다가 싸워서 피드백 남겼어요… (0) | 2024.08.28 |
6) 팀 프로젝트 열심히 했으니 다시 놀아볼까요?! (1) | 2024.08.28 |