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

<SQLD 35> 그룹 함수에 대한 기출문제

by HYEHYE_SON 2024. 4. 4.
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;

 

반응형