[SparkSQL] COUNT FILTER : 다른 조건으로 여러 건 집계

sosimeow·2022년 11월 2일
0

SQL

목록 보기
3/5
post-thumbnail

1. COUNT FILTER

기존 COUNT 함수를 통해 컬럼 별 집계하는 것에서 더 나아가 조건을 부여한 집계를 할 수 있다



2. 기본 문법

SELECT COUNT([컬럼]) filter (WHERE (조건) ) AS '생성할 컬럼명'

WHERE 조건절이 성립하는 컬럼 값만 집계

COUNT 안에 컬럼 대신 * OR 1 이 들어가면, 컬럼 값이 아닌 행 수를 기준으로 집계(null 값 포함)



3. 사용 예시

/*제품 타입별 판매 집계*/
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에 해당하는 각 제품의 집계를 구하는 쿼리입니다.

profile
데이터 엔지니어 ing

0개의 댓글