집합함수 사용결과가 다른 이유를 알고 싶습니다. 0 1 1,011

by 완전정복 [SQL Query] SQL 집합함수 [2021.06.07 14:22:04]


안녕하십니까.

동일한 자료에 대해서 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 즉, 행이 발생되지 않았습니다.
위 조건절로 하게 되면, 데이터는 나오지 않습니다.
왜 차이가 나는지 답변 주시면 감사하겠습니다.
 

by 마농 [2021.06.07 14:44:16]

group by 가 없으면 전체 집계 -> 전체 집계결과 1건 출력
group by 가 있으면 그룹별 집계 -> 그룹별 집계결과가 그룹별로 1건씩, 전체 그룹수 만큼 출력
조건을 만족하는 행이 없으면
전체 집계 -> 전체 집계결과 1건 출력
그룹별 집계 -> 그룹의 수만큼 출력되는데. 출력할 그룹 자체가 없음

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입