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

<SQLD 34> 그룹 함수와 null 값에 대한 기출문제

by HYEHYE_SON 2024. 4. 3.
728x90

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


 


문제 34.

다음 주어진 테이블에서 집계 함수를 수행하였을 때 결과값으로 다른 것을 고르시오.

 

[ TEST35 ]

USERID USERCOUNT
KIM 10
PARK 20
LIM NULL
SIN NULL

 
SELECT COUNT(NVL (USERCOUNT, 0)) FROM TEST35;
SELECT SUM(NVL (USERCOUNT, 0)) / 4 FROM TEST35;
SELECT AVG(NVL (USERCOUNT, 0)) FROM TEST35;
SELECT AVG(NVL (USERCOUNT, 1)) - 0.5 FROM TEST35;


해설해보기

■ NVL( A, B )
NVL()함수는 A값이 NULL이면 B를 출력하는 함수이다.

■ 그룹합수의 특징
그룹함수(집계함수)는 NULL 값을 무시하는 특징을 가지고 있다.

 

< 1번 설명 >

1번의 경우 USERCOUNT 컬럼의 값이 NULL 인 데이터를 0으로 변환하고,

TEST35 테이블의 데이터를 COUNT() 하는 쿼리문입니다. 

따라서 4라는 결과가 출력되는 것을 확인할 수 있습니다. 

SELECT COUNT(NVL (USERCOUNT, 0)) FROM TEST35;

 

< 2번 설명 >

2번의 경우 USERCOUNT 컬럼의 값이 NULL인 데이터를 0으로 반환하고 

TEST35 테이블의 USERCOUNT 컬럼의 데이터를 SUM() 함수를 사용하여 합계를 구하고

합계를 4로 나눈 쿼리문 입니다. 

(10 + 20 + 0 + 0 ) / 4 = 30 / 4 = 7.5

따라서 출력된 결과는 7.5 입니다.

SELECT SUM(NVL (USERCOUNT, 0)) / 4 FROM TEST35;

 

< 3번 설명 >

3번은 USERCOUNT 컬럼의 값이 NULL인 데이터를 0으로 반환하고 

TEST35 테이블의 USERCOUNT 컬럼의 데이터를 AVG 함수를 사용하여 평균 값을 구하는 쿼리입니다.

(10 + 20 + 0 + 0 ) / 4 = 30 / 4 = 7.5

따라서 출력된 결과는 7.5입니다.

SELECT AVG(NVL (USERCOUNT, 0)) FROM TEST35;

 

< 4번 설명 >

4번은 USERCOUNT 컬럼의 값이 NULL인 데이터를 1로 반환하고 

TEST35 테이블의 USERCOUNT 컬럼의 데이터를 AVG 함수를 사용하여 평균 값을 구하는 쿼리입니다.

( (10 + 20 + 1 + 1 ) / 4 ) - 0.5 = ( 32 / 4  ) - 0.5 = 7.5 

따라서 출력 결과는 7.5 입니다.

SELECT AVG(NVL (USERCOUNT, 1)) - 0.5 FROM TEST35;

 

 

최종적으로 1~4번 중 출력된 결과 값이 다른 것을 구하는 문제에 대한 정답은

4가 출력된 ① 번입니다. 

 


관련 스크립트

CREATE TABLE TEST35 (
    USERID VARCHAR2(30),
    USERCOUNT NUMBER
);

-- 데이터 삽입
INSERT INTO TEST35 (USERID, USERCOUNT) VALUES ('KIM', 10);
INSERT INTO TEST35 (USERID, USERCOUNT) VALUES ('PARK', 20);
INSERT INTO TEST35 (USERID, USERCOUNT) VALUES ('LIM', NULL);
INSERT INTO TEST35 (USERID, USERCOUNT) VALUES ('SIN', NULL);


 
 
 
 
 
 
 
 
 

반응형