-
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 댓글