10) 이젠 테이블이 2개입니다
다음과 같은 직원(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 != '마케팅팀'
);