Cracking Code

SQL - GROUP BY, HAVING 본문

Database

SQL - GROUP BY, HAVING

CrackCo 2020. 7. 19. 16:13
어떤 컬럼을 기준으로 그룹으로 묶어서 데이터 값들을 출력할 수 있도록 도와주는
GROUP BY 절에 대해서 알아보겠습니다.

1. GROUP BY

SELECT [column], group_function(column)
FROM table
[WHERE 조건식]
[GROUP BY column]
[ORDER BY column]

전체 테이블이 아닌 특정 그룹으로 묶을 때 GROUP BY 함수를 통해 출력할 수 있습니다.
그룹 함수는 GROUP BY 없이 일반 컬럼과 함께 출력할 수 없습니다.

그룹으로 묶을 컬럼은 반드시 SELECT 절에도 존재해야합니다!

 

부서 번호를 그룹화하여 각 그룹의 SAL 평균을 출력해볼까요?

SELECT DEPTNO, AVG(SAL)
FROM EMP
GROUP BY DEPTNO;

부서 번호별로 평균 SAL을 출력하는 모습을 볼 수 있습니다.

 

2. HAVING

SELECT [column], group_function(column)
FROM table
[WHERE 조건식]
[GROUP BY column]
[HAVING 조건식]
[ORDER BY column]

GROUP BY 절에 의해 분류된 그룹에 조건식을 적용할 때 사용합니다.

참고) 질의문의 실행 순서는 아래와 같습니다.

1. FROM
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. ORDER

 

사원 테이블에서 급여 평균이 3000 이상인 직업에 대해 직업, 급여 평균, 급여의 합을 출력해봅시다.

SELECT JOB, AVG(SAL), SUM(SAL)
FROM EMP
GROUP BY JOB
HAVING AVG(SAL) >= 3000;

급여 평균이 3000 이상인 직군이 출력되는 것을 볼 수 있습니다.

'Database' 카테고리의 다른 글

SQL - JOIN (ANSI)  (0) 2020.07.19
SQL - JOIN (ORACLE)  (0) 2020.07.19
SQL - SUM, AVG, MAX, MIN, COUNT  (0) 2020.07.19
SQL - DECODE  (0) 2020.07.19
SQL - CASE  (0) 2020.07.19
Comments