• SQL HAVING절

    2021. 5. 31.

    by. Jacob Lee

    728x90

     


     

    Having절

    이전까지는 GROUP BY절을 실행하기 전에 WHERE문을 사용해서 필터링을 했다.

    하지만 아래와 같은 코드에서 aggregate 함수에 기반해 필터링을 하고 싶다면 어떻게 해야 할까?

    SELECT company, SUM(sales)
    FROM finance_table
    WHERE company != 'Google'
    GROUP BY company;

     

    여기서 한 가지 고려해야할 점이 한가지 있다. 

    SELECT문과 위치한 SUM()함수는 제일 아래의 GROUP BY절이 실행되기 전까지 실행되지 않는다는 것이다. 즉, GROUP BY 보다 위에 위치한 WHERE로는 aggregate 함수에 기반해서 필터링을 할 수 없다는 것이다.

     

    이때, WHERE로 불가능한 함수 기반 필터링을 가능하게 해주는 것이 바로 HAVING절이다.

    HAVING절은 GROUP BY절과 함께 aggregate 함수 결과로 필터링이 가능하도록 해준다.

     

    HAVING절의 기본 문법은 다음과 같다.

    SELECT column_name
    FROM table_name
    WHERE condition
    GROUP BY column_name
    HAVING condition
    ORDER BY column_name;

     

    HAVING절 사용하기

    본문 상단에 있는 WHERE절로 필터링을 한 SQL문을 HAVING절을 사용해 바꿔보도록 하자.

    HAVING절을 사용해 SUM()함수가 1000보다 큰 데이터를 조회를 다음과 같이 할 수 있다.

    SELECT company, SUM(sales)
    FROM finance_table
    GROUP BY company
    HAVING SUM(sales) > 1000;

    위와 같이 GROUP BY절과 HAVING절을 같이 사용함으로써 집계 함수에 기반해서 필터링이 가능해졌다.

     

    728x90

    'Back-end > SQL' 카테고리의 다른 글

    SQL JOIN절  (0) 2021.06.01
    SQL AS 키워드  (0) 2021.06.01
    SQL GROUP BY절  (0) 2021.05.31
    SQL Aggregate 함수 (AVG, COUNT, MAX, MIN, SUM)  (0) 2021.05.31
    SQL LIKE & ILIKE연산자  (0) 2021.05.30

    댓글