본문 바로가기
SQL 문제 풀기/2. SQLD 기출 : 2024.3.01~2024.4.25

<SQLD 18> AVG 함수에 대한 기출문제

by HYEHYE_SON 2024. 3. 18.
728x90

매일 SQLD 기출 문제 풀기 챌린지


 


문제18.

아래의 SQL결과를 적으시오.

 

[ 테이블 명: TAB1 ]

COL1
4
8
4
8
NULL
NULL
select avg(col1) - avg(nvl(col1,0)) from tab1;

 

주관식 답 :


해설해보기

이 문제는 그룹함수인 avg 에 대해서 알고 있는지 물어보는 문제이다.

* AVG()
그룹함수는 avg는 평균을 계산하는 함수이다.
이 함수는 null을 무시하고 계산한다.

위의 SQL을 해석해보면 

1. COL1에 대한 평균
   : NULL을 무시하기 때문에 4로 나눈다( NULL인 행은 포함하지 않고 무시)
     AVG(COL1) = ( 4 + 8 + 4 + 8 ) / 4 = 6

2. NULL을 0으로 바꾼 COL1에 대한 평균
   : NULL을 특정 값으로 바꾸는 NVL( [컬럼명], [컬럼의 값이 NULL일때 바꿀 값]) 함수에 의해
     NULL을 0으로 바꾸고, 0은 무시하지 않기 때문에 6으로 나눈다
     AVG(NVL(COL1, 0)) = ( 4 + 8 + 4 + 8 + 0 + 0 ) / 6 = 4

따라서 
6 - 4 = 2를 출력하게 된다.

정답은 2

 
직접 실행해보기

SELECT AVG(COL1) - AVG(NVL(COL1, 0)) FROM TAB1;

 


관련 스크립트

create  table  tab1
(  col1    number(10) );

insert into tab1 values(4);
insert into tab1 values(8);
insert into tab1 values(4);
insert into tab1 values(8);
insert into tab1 values(null);
insert into tab1 values(null);

commit;

 

반응형