DAY15 - 데이터 그룹화

은나현·2023년 2월 10일
0

📌 1. SQL 그룹화 함수

📍 1-1. GROUP BY

  • 자료 값의 개수를 세는 등의 목적으로 이용하는 distinct 함수는 중복 자료를 제거해 버리기 때문에 집계함수(count, sum, max...)와 함께 사용할 수 없다.

  • group by 함수는 데이터를 그룹핑해서 그 결과를 가져오므로 집계함수와 짝을 이루어 사용할 수 있다.

    • DEPARTMENT_ID 값이 같은 자료들을 그룹화하여 가져오는 예시
      		SELECT 	DEPARTMENT_ID 
      		FROM 	EMPLOYEES e 
      		GROUP BY DEPARTMENT_ID 
      		;
    • DEPARTMENT_ID 값이 같은 각 그룹의 SALARY값 합계를 가져오는 예시
      		SELECT 		DEPARTMENT_ID , SUM(SALARY) 
      		FROM 		EMPLOYEES e 
      		GROUP BY 	DEPARTMENT_ID 
      		;
    • GROUP BY 함수에 ,를 사용하면 명시한 열의 순서대로 다중 그룹화가 가능하다.
      • DEPARTMENT_ID 안에서 JOB_ID로 한 번 더 그룹화한 그룹들의 각 그룹 인원수와 SALARY 평균을 가져오는 예시
      		SELECT 	DEPARTMENT_ID	,	JOB_ID 
      			,	COUNT(JOB_ID)	, 	AVG(SALARY) 
      		FROM 	EMPLOYEES e 
      		GROUP BY DEPARTMENT_ID ,	JOB_ID 
      		ORDER BY DEPARTMENT_ID ,	JOB_ID 
      		;
      • ORDER BY 함수도 같은 방식으로 나열해서 사용할 수 있다.

📍 1-2. HAVING

  • HAVING은 집계함수를 가지고 조건비교를 할 때 사용하는 함수이다.
    • HAVING 절은 단독으로 사용할 수 없으며 반드시 GROUP BY 절과 함께 사용한다.
      • WHERE 절에서는 집계함수를 사용할 수 없다. 쿼리문 하단에 GROUP BYHAVING을 쌍으로 사용하여 집계함수를 통한 조건비교를 수행할 수 있다.
      • DEPARTMENT_ID가 같은 자료들의 그룹 중 총 자료수가 10 이상인 그룹을 가져오는 예시
      		SELECT 	DEPARTMENT_ID	,	COUNT(*) 
      		FROM 	EMPLOYEES e 
      		WHERE 	DEPARTMENT_ID IS NOT NULL 		
        		// DEPARTMENT_ID가 NULL이 아닌 자료들만 취급한다
      		GROUP BY DEPARTMENT_ID 
      		HAVING 	COUNT(*) >= 10
      		;

0개의 댓글