SQL연습문제

10) 이젠 테이블이 2개입니다

Twisted 2024. 8. 29. 16:18

다음과 같은 직원(employees) 테이블과 부서(departments) 테이블이 있습니다.

  • employees 테이블

id,  department_id,  name

1 101 르탄이
2 102 배캠이
3 103 구구이
4 101 이션이
  • departments 테이블

id,  name

101 인사팀
102 마케팅팀
103 기술팀
  1. 현재 존재하고 있는 총 부서의 수를 구하는 쿼리를 작성해주세요!
  2. 모든 직원과 그들이 속한 부서의 이름을 나열하는 쿼리를 작성해주세요!
  3. '기술팀' 부서에 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
  4. 부서별로 직원 수를 계산하는 쿼리를 작성해주세요!
  5. 직원이 없는 부서의 이름을 찾는 쿼리를 작성해주세요!
  6. '마케팅팀' 부서에만 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!

 

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 != '마케팅팀'
);