[SQLD/P] CASE가 들어간 HAVING COUNT

Hyo Kyun Lee·2022년 12월 6일
0

SQLD/P

목록 보기
61/82

1. 개요

특정 혹은 여러 개의 COLUMN을 기준으로 집계를 내고자 할때 GROUP BY함수와 집계함수 혹은 count(*) 등을 활용한다.

이 집계함수 대신에 다른 구문을 통해서도 집계를 할 수 있는데, 이때 사용할 수 있는 것이 HAVING 조건절로 COUNT와 CASE 키워드를 사용하는 것이다.

2. 구문

COLUMN_A, COLUMN_B를 기준으로 GROUP BY한 후, 특정 집계조건을 만족하는 COLUMN_A와 COLUMN_B를 출력하고자 한다.

SELECT COLUMN_A, COLUMN_B
FROM TABLE_A, TABLE_B
GROUP BY COLUMN_A, COLUMN_B
HAVING COUNT(
	CASE WHEN COLUMN_A = 'N' THEN 0
    ELSE NULL
    END
) >= 1
ORDER BY COLUMN_A

위에서 말한 특정 집계조건이란, 말그대로 COUNT집계함수를 사용할때 집계를 하기 위한 특정 조건을 설정하는 과정을 의미한다.

SQL에서 기재한 조건에 따르면, COLUMN_A가 'N'일때 count하고, 그렇지 않다면 count하지 않는다는 것을 알 수 있다.

이때 유의해야할 점은 0 혹은 1 모두 집계를 한다는 것이고, NULL일때 집계를 하지 않는다는 것이다.

이것이 GROUP BY - COUNT를 나타내는 구조이고, 특정 조건을 COUNT조건에 추가할 수 도 있음을 유의한다.

3. 참고자료

HAVING COUNT + CASE - https://ggmouse.tistory.com/146

0개의 댓글