728x90
매일 SQLD 기출 문제 풀기 챌린지
문제 35.
다음 주어진 테이블에서 아래의 SQL을 수행한 결과로 알맞은 것은?
[ TEST23 ]
COL1 | COL2 | COL3 | COL4 |
10 | 10 | 10 | 20 |
20 | 20 | NULL | 30 |
30 | NULL | NULL | 10 |
NULL | 30 | 10 | 40 |
[ SQL ]
SELECT SUM(COL1+COL2+COL3+COL4) FROM TEST23;
SELECT SUM(COL1) + SUM(COL2) + SUM(COL3) + SUM(COL4) FROM TEST23;
① 50, NULL
② NULL, 240
③ 50, 240
④ NULL, NULL
해설해보기
< 첫 번째 쿼리 >
첫 번째 쿼리는 모든 컬럼의 값을 더한 후, 그 결과의 합을 계산하는 쿼리입니다.
그런데 주목할 점은 NULL 값이 존재할 경우 결과는 NULL 이 된다는 것 입니다.
따라서 각 행에 NULL 값이 존재한다면, 그 행의 합은 NULL 이 됩니다.
첫 번째 행: 10 + 10 + 10 + 20 = 50
두 번째 행: 20 + 20 + NULL + 30 = NULL (NULL 값 포함으로 결과 제외)
세 번째 행: 30 + NULL + NULL + 10 = NULL (NULL 값 포함으로 결과 제외)
네 번째 행: NULL + 30 + 10 + 40 = NULL (NULL 값 포함으로 결과 제외)
최종적으로 SUM( COL1 + COL2 + COL3 + COL4 ) = 50 이 출력됩니다.
< 두 번째 쿼리 >
두번째 쿼리 각 컬럼의 합을 개별적으로 계산한 뒤, 그 결과를 모두 더하는 쿼리입니다.
SUM 함수는 그룹함수로, 그룹함수의 특징을 가지고 있습니다.
그룹함수의 특징은 NULL값을 무시하고, NULL 이 아닌 값들의 합을 반환합니다.
따라서 각 컬럼에서 NULL 값은 합계 계산에 영향을 주지 않습니다.
SUM(COL1): 10 + 20 + 30 + NULL(무시) = 60
SUM(COL2): 10 + 20 + NULL(무시) + 30 = 60
SUM(COL3): 10 + NULL(무시) + NULL(무시) + 10 = 20
SUM(COL4): 20 + 30 + 10 + 40 = 100
최종적으로 60 + 60 + 20 + 100 = 240 이 출력됩니다.
관련 스크립트
create table test23
( col1 number(10),
col2 number(10),
col3 number(10),
col4 number(10));
insert into test23 values(10,10,10,20);
insert into test23 values(20,20,null,30);
insert into test23 values(30,null,null,10);
insert into test23 values(null,30,10,40);
commit;
반응형
'SQL 문제 풀기 > 2. SQLD 기출 : 2024.3.01~2024.4.25' 카테고리의 다른 글
<SQLD 37> 기타 비교연산자 대한 기출문제 (0) | 2024.04.06 |
---|---|
<SQLD 36> 데이터 분석함수에 대한 기출문제 (0) | 2024.04.05 |
<SQLD 34> 그룹 함수와 null 값에 대한 기출문제 (0) | 2024.04.03 |
<SQLD 33> 그룹 함수에 대한 기출문제 (0) | 2024.04.02 |
<SQLD 32> 일반 함수에 대한 기출문제 (0) | 2024.04.01 |