김호진02 2024. 10. 18. 16:17

다음과 같은 직원(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='마케팅팀';