본문 바로가기
스터디/SQL

[정리노트] SQLD 개정판 - GROUP BY

by 견습생L 2024. 8. 21.

[정리노트] SQLD 개정판 - GROUP BY


GROUP BY

  • 각 행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 구문식
  • GROUP BY 절에 그룹을 지정할 컬럼을 전달 (여러 개 전달 가능)
  • 만약 그룹 연산에서 제외할 대상이 있다면 미리 WHERE 절에서 해당 행을 제외함 (WHERE 절이 GROUP BY 절보다 먼저 수행되므로)
  • 그룹에 대한 조건은 WHERE 절에서 사용할 수 없음
  • SELECT 절에 집계 함수를 사용하여 그룹연상 결과 표현
  • GROUP BY 절을 사용하면 데이터가 요약되므로, 요약되기 전 데이터와 함께 출력할 수 없음

 ex) 부서별(DEPARTMENT_ID) 급여 총 합과 급여 평균 출력

SELECT DEPARTMENT_ID, SUM(SALARY), ROUND(AVG(SALARY))
	FROM EMPLOYEES
 GROUP BY DEPARTMENT_ID;

ex) 직군(JOB_ID) 별 급여 총 합과 급여 평균 출력

SELECT JOB_ID, SUM(SALARY), ROUND(AVG(SALARY))
	FROM EMPLOYEES
 GROUP BY JOB_ID;

ex) Group by의 잘못된 예

→ Group by 절에 DEPTNO를 사용하면 DEPTNO가 같은 값끼리 묶여서 요약 정보만 SELECT 절에 표현 가능. 따라서 Group by 컬럼과 집계 함수를 사용한 결과만이 전달 가능

→ Group by 절에 명시되지 않은 컬럼 전달 불가!

반응형