본문 바로가기
DATABASE/ORACLE

[Oracle] SQL HAVING

HAVING





SELECT 절에 조건을 사용하여 결과를 제한 할 때는 WHERE 절을 사용하지만 그룹의 결과를 제한 할 때는 HAVING 절을 사용한다



평소와 같은 현재 테이블

1
2
3
4
5
6
7
8
9
10
11
12
SQL> SELECT *FROM member;
 
        ID USERNAME             DEPT    BIRTH           SAL       COMM
---------- -------------------- ------- -------- ---------- ----------
        10 아이유               로엔    93/05/16       1000        800
        11 삼도다               컴알못  91/08/12        500
        12 호날두               레알    85/02/05       2000       1000
        13 메시                 바르샤  87/06/24       3000        100
        14 라모스               레알    86/03/30       1500        800
        15 크로스               레알    90/01/04       1300        500
 
6 개의 행이 선택되었습니다.
cs



부서(DEPT)별로 그룹지은 후, 그룹 지어진 부서별 평균 급여가 1000 이상인 부서이름과 부서별 평균 급여를 출력 할 경우



먼저 그룹으로 묶어 평균 급여를 출력 했다.


1
2
3
4
5
6
7
8
SQL> SELECT DEPT, AVG(SAL) FROM member group by DEPT;
 
DEPT      AVG(SAL)
------- ----------
바르샤        3000
로엔          1000
컴알못         500
레알          1600
cs




여기서, 평균 급여가 1000 이상인 경우를 출력 하고자 할 때, WHERE 절을 사용 하면 안된다.

그룹으로 묶인 것은 HAVING 절을 사용 하자


1
2
3
4
5
6
SQL> SELECT DEPT, AVG(SAL) FROM member group by DEPT HAVING AVG(SAL) > 1000;
 
DEPT      AVG(SAL)
------- ----------
바르샤        3000
레알          1600
cs

※HAVING 절을 사용하여 로엔과 컴알못 부서(DEPT)가 출력되지 않았다.






정리하여, SELECT 절에 조건을 사용하여 결과를 제한 할 때는 WHERE 절을 사용하지만, 그룹의 결과를 제한 할때는 HAVING 절을 사용한다.

'DATABASE > ORACLE' 카테고리의 다른 글

[Oracle] SQL Self Join  (0) 2018.04.20
[Oracle] SQL JOIN  (0) 2018.04.20
[Oracle] SQL GROUP BY 절  (0) 2018.04.20
[Oracle] SQL 그룹 함수 집계 데이터  (0) 2018.04.20
[Oracle] SQL 조건식  (0) 2018.04.20