특정 혹은 여러 개의 COLUMN을 기준으로 집계를 내고자 할때 GROUP BY함수와 집계함수 혹은 count(*) 등을 활용한다.
이 집계함수 대신에 다른 구문을 통해서도 집계를 할 수 있는데, 이때 사용할 수 있는 것이 HAVING 조건절로 COUNT와 CASE 키워드를 사용하는 것이다.
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조건에 추가할 수 도 있음을 유의한다.
HAVING COUNT + CASE - https://ggmouse.tistory.com/146