부서별 합계 문제 0 1 770

by 날막아봐 [Oracle 기초] [2020.09.02 12:52:04]


가. 실제 데이터

DEPTNO    SAL

10

10             1000

10             2000

20

20              500

 

나. SELECT 문

SELECT DEPTNO. SUM(NVL(SAL,0)) FROM 

DEPT GROUP BY DEPTNO;

이렇게 문제가 나와있는데 

보기 중 '부서별 합계를 계산할 때 NULL값을 만나면 0으로 치환한다' 가 있습니다 

 

합계를 할 때 집계함수를 사용하니까 NULL값은 0으로 치환이 아니라 제외가 맞지 않나요? 옳지않은 것을 고르는데 정답이 아니라서 질문드립니다.

by 마농 [2020.09.02 13:32:36]

SUM 과 NVL 두 함수의 계산 시점을 생각하세요.
NVL 이 SUM 보다 먼저 수행이 됩니다. SUM(NVL)
우선 NVL 이 NULL 을 치환하므로, SUM 에서 제외시킬 NULL 은 더이상 없습니다.
만약 SUM(NVL) 이 아닌 NVL(SUM) 이었다면? SUM 이 먼저 수행되겠죠.

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