기존 COUNT 함수를 통해 컬럼 별 집계하는 것에서 더 나아가 조건을 부여한 집계를 할 수 있다
SELECT COUNT([컬럼]) filter (WHERE (조건) ) AS '생성할 컬럼명'
COUNT 안에 컬럼 대신 *
OR 1
이 들어가면, 컬럼 값이 아닌 행 수를 기준으로 집계(null 값 포함)
/*제품 타입별 판매 집계*/
SELECT COUNT(*) AS PRD_TOTAL
,COUNT(PRD_CODE) FILTER (WHERE (TYP = '00') ) AS PRD_TP00
,COUNT(PRD_CODE) FILTER (WHERE (TYP = '01') ) AS PRD_TP01
, COUNT(PRD_CODE) FILTER (WHERE (TYP = '02') ) AS PRD_TP02
FROM PRD_TABLE
WHERE 1=1
AND SALE_DATE > CURRENT_DATE - INTERVAL '1 MONTH' -- 지난 한 달간
가상의 판매 테이블 PRD_TABLE
에서 지난 한 달간 전체 제품 판매 집계와 TYP(타입) 00 ~ 02에 해당하는 각 제품의 집계를 구하는 쿼리입니다.