매일 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);
'SQL 문제 풀기 > 2. SQLD 기출 : 2024.3.01~2024.4.25' 카테고리의 다른 글
<SQLD 36> 데이터 분석함수에 대한 기출문제 (0) | 2024.04.05 |
---|---|
<SQLD 35> 그룹 함수에 대한 기출문제 (0) | 2024.04.04 |
<SQLD 33> 그룹 함수에 대한 기출문제 (0) | 2024.04.02 |
<SQLD 32> 일반 함수에 대한 기출문제 (0) | 2024.04.01 |
<SQLD 31> nvl 함수에 대한 기출문제 (0) | 2024.03.31 |