안녕하십니까.
동일한 자료에 대해서 GROUP BY 문을 써서 집합함수를 사용한 것이나, GROUP BY 없이 집합함수를 사용할 때에 결과가 다르게 나오는 이유에 대해서
알고 싶습니다.
[예1]
SELECT SUM(ETC_AMT) AS TOT_AMT
FROM TB_LM061
WHERE BLNG_CD = '1111'
AND LABR_WK_GR_CD = '01'
AND LWK_YMD >= '202101' || DECODE('0', '0', '01', '1', '16', '01')
AND LWK_YMD <= '202101' || DECODE('0', '0', '15', '31')
AND GIVE_FG = '0'
[예2]
SELECT SUM(ETC_AMT) AS TOT_AMT
FROM TB_LM061
WHERE BLNG_CD = '1111'
AND LABR_WK_GR_CD = '01'
AND LWK_YMD >= '202101' || DECODE('0', '0', '01', '1', '16', '01')
AND LWK_YMD <= '202101' || DECODE('0', '0', '15', '31')
AND GIVE_FG = '0'
GROUP BY BLNG_CD, LABR_ENO, LABR_WK_GR_CD
예1 과 예2의 차이는 GROUP BY 절을 사용했냐 안했냐 차이고요.
결과는 예1 은 NULL 행이 발생이 되고, 예2는 No rows returned 즉, 행이 발생되지 않았습니다.
위 조건절로 하게 되면, 데이터는 나오지 않습니다.
왜 차이가 나는지 답변 주시면 감사하겠습니다.
group by 가 없으면 전체 집계 -> 전체 집계결과 1건 출력
group by 가 있으면 그룹별 집계 -> 그룹별 집계결과가 그룹별로 1건씩, 전체 그룹수 만큼 출력
조건을 만족하는 행이 없으면
전체 집계 -> 전체 집계결과 1건 출력
그룹별 집계 -> 그룹의 수만큼 출력되는데. 출력할 그룹 자체가 없음