[SQL퀴즈] not a single-group group function 해결, group by사용, outer join사용
문제
employees 테이블과 departments 테이블로부터 각 부서에 대한 부서번호(department_id), 부서이
름(department_name), 위치(location_id) 및 사원(employee_id) 수를 보여주는 쿼리구문을 작성하시오.
단, 사원이 없는 부서도 출력을 시키시오.
두 테이블 구조는 아래와 같다.
1 | $> desc employees; |
1 | $> desc departments; |
내쿼리
1 | select e.department_id, d.department_name, d.location_id, count(e.employee_id) |
강사님코드
1 | SELECT d.department_id, d.department_name, d.location_id, COUNT(e.employee_id) |
배운 지식
첫번째
- join할때 내 코드는 inner join으로 조인조건을 만족하는 행만 반환한다
- 반면 outer join은 조인조건을 만족하는 행과 조인조건을 만족하지않는 행을 모두 반환하기때문에 문제에서 제시했던
단, 사원이 없는 부서도 출력을 시키시오.
까지 만족시킬 수 있다. - 따라서 outer join을 사용해야한다.
- 반면 outer join은 조인조건을 만족하는 행과 조인조건을 만족하지않는 행을 모두 반환하기때문에 문제에서 제시했던
두번째
not a single-group group function
의미는 해당 SQL쿼리문에 특정 열이 GROUP BY구에서 참조되지 않으면 그 열과 Group function를 포함할 수 없으므로 group by를 넣어야한다.- Group by절
- Group by절은 count하는 열빼고 다 작성해야한다.