10) 이젠 테이블이 2개입니다.
다음과 같은 직원(employees) 테이블과 부서(departments) 테이블이 있습니다.
- employees 테이블
|
id
|
department_id
|
name
|
|
1
|
101
|
르탄이
|
|
2
|
102
|
배캠이
|
|
3
|
103
|
구구이
|
|
4
|
101
|
이션이
|
- departments 테이블
|
id
|
name
|
|
101
|
인사팀
|
|
102
|
마케팅팀
|
|
103
|
기술팀
|
38번 문제
현재 존재하고 있는 총 부서의 수를 구하는 쿼리를 작성해주세요!
조건1 존재하고있는( employees 테이블중 departments 부서에 포함 것만! INNER JOIN)
답)
SELECT SUM(id)
FROM departments d INNER JOIN employees e ON d.department_id=e. department_id id;
39번 문제
모든 직원과 그들이 속한 부서의 이름을 나열하는 쿼리를 작성해주세요!
조건1 모든직원과 (employees전체)와 그들의 부서명(departments에 있는 부서명)
답)
SELECT e.id, e.name,e.departments_id,d.name '부서'
FROM employees e LEFT JOIN departments d ON e.department_id=d.id;
40번 문제
'기술팀' 부서에 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
조건1 '기술팀'부서의 속한 직원들의 이름(departments테이블에서 기술팀인 아이디와 employees테이블의 department_id가 같은 직원의 이름 출력)
답)
SELECT e.name
FROM employees e LEFT JOIN departments d ON e.department_id=d.id
WHERE d.name='기술팀';
41번 문제
부서별로 직원 수를 계산하는 쿼리를 작성해주세요!
조건1 부서별(GROUP BY) 직원수(SUM) =이때 departments테이블에 모든 부서 중 근무하는 사원 수를 출력
SELECT d.name '부서', SUM(e.name) '직원수'
FROM departments d LEFT JOIN employees e ON d.id=e.department_id
GROUP BY 1;
42번 문제
직원이 없는 부서의 이름을 찾는 쿼리를 작성해주세요!
답)
SELECT d.name
FROM departments d LEFT JOIN employees e ON d.id=e.department_id
WHERE e.name IS NULL;
43번 문제
'마케팅팀' 부서에만 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
답)
SELECT e.name
FROM employees e LEFT JOIN departments d ON e.department_id=d.id
WHERE d.name='마케팅팀';