반응형
A테이블에서는 업체, 정산 날짜, 지점, 수수료율 이렇게 4가지만 GROUP BY가 들어가고 나머지 칼럼은 승인금액, 수수료 금액은 합으로 계산되어 들어가 있습니다.
B테이블에는 A테이블을 이용하여 업체, 정산날짜만 GROUP BY가 들어가고 나머지 금액은 SUM()으로 구합니다. 이때 B테이블에도 수수료 칼럼이 들어가는데, 업체의 수수료가 다 똑같은 경우에는 해당 수수료가 들어가고 수수료가 다른 경우는 0으로 넣어줍니다.
이때 사용해줄 수 있는 것이 COUNT(distinct 수수료율) 입니다. COUNT(distinct 수수료율)을 사용해주면 group by에 수수료율 넣어줄 필요 없이 group by 묶인 업체의 수수료 개수를 알려줍니다.
SELECT 정산날짜, 업체, SUM(수수료)
, CASE WHEN count(distinct 수수료율) > 1
THEN 0
ELSE MIN(수수료율) END 수수료율
FROM A
GROUP BY 정산날짜, 업체
;
MIN(수수료율)은 GROUP BY를 피하기 위해서 사용하였으며 COUNT 개수는 1이기 때문에 MIN의 의미는 없습니다.
반응형
'DB > Oracle' 카테고리의 다른 글
[DB] 오라클 NULL 조인(조인 시 주의사항) (0) | 2019.03.28 |
---|---|
[DB] 오라클 실행계획 보는 법(autotrace 사용) (0) | 2019.03.25 |
[DB] 오라클 시퀀스란? (시퀀스 생성, 시퀀스 삭제) (0) | 2019.03.15 |
[DB] 오라클 시노님(synonym)이란? (시노님 생성, 시노님 삭제) (0) | 2019.03.14 |
[DB] 오라클 에러, ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다. (0) | 2019.03.13 |