카운트 하는 여러가지 방법.
전체건수에서 성별 구하는 것은 다른 방법으로도 가능하지만, COUNT로 표현하는 방법으로 작성했다.
(예: SUM( DECODE( H_SEX, '1', 1, 0 ) ) 건수_남 )
통계할 때 사용했었는데 DISTINCT안에 CASE 사용하는 것은 처음인 것 같아서...
1. COUNT 안에서 CASE 문 사용 가능: 전체 건수로 작성하고자 할때
2. COUNT 안에 DISTINCT + CASE 사용 가능: 중복제거 후 사용하고자 할때
SELECT
COUNT(*) 전체건수
, COUNT( CASE WHEN H_SEX = '1' THEN H_ID END ) 건수_남
, COUNT( CASE WHEN H_SEX = '2' THEN H_ID END ) 건수_여
, COUNT( DISTINCT H_ID ) 대상수
, COUNT( DISTINCT (CASE WHEN H_SEX = '1' THEN H_ID END) ) 대상_남
, COUNT( DISTINCT (CASE WHEN H_SEX = '2' THEN H_ID END) ) 대상_여
FROM(
SELECT 1 SEQ, '201910001' H_ID, '1' H_SEX, 'TEST1' CMT FROM DUAL
UNION
SELECT 2 SEQ, '201910001' H_ID, '1' H_SEX, 'TEST2' CMT FROM DUAL
UNION
SELECT 3 SEQ, '201910001' H_ID, '1' H_SEX, 'TEST3' CMT FROM DUAL
UNION
SELECT 4 SEQ, '201910002' H_ID, '2' H_SEX, 'TEST1' CMT FROM DUAL
UNION
SELECT 5 SEQ, '201910002' H_ID, '2' H_SEX, 'TEST2' CMT FROM DUAL
UNION
SELECT 6 SEQ, '201910003' H_ID, '1' H_SEX, 'TEST1' CMT FROM DUAL
);