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

<SQLD 11> Null 값 처리하는 일반함수 기출문제

by HYEHYE_SON 2024. 3. 11.
728x90

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


 


문제11.

다음 주어진 SQL문의 결과값이 다른 것은? 

 

[ 테이블명 : SQLD_11 ]

COL1 COL2 COL3
A 300 50
B 300 150
C NULL 300
D 300 100

 

[ SQL ]

SELECT NVL(COL2, COL3) AS 금액1,
       COALESCE(COL2, COL3) AS 금액2,
       NULLIF(COL2, COL3) AS 금액3,
       CASE WHEN COL2 IS NOT NULL THEN COL2 ELSE COL3 END AS 금액4
FROM SQLD_11;

 
① 금액 1
② 금액 2
③ 금액 3
④ 금액 4


해설해보기

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


2. COALESCE( A, B )
COALESC() 함수는 A가 NULL이면 B를 출력하는 함수이다.

  * NVL() vs COALESCE()
     - COALESCE()함수는 COALESCE( A, B, C ) 가 가능하여
        A가 NULL이면 B, B도 NULL이면 C를 실행할 수 있다


3.  NULLIF( A, B )
A와 B가 같으면 NULL을 출력하고
A와 B가 같지 않으면 A를 출력한다


4. CASE WHEN 조건 THEN 출력1  ELSE 출력2  END
조건이 참이면 출력1
조건이 거짓이면 ELSE로 넘어가서 출력2를 실행하며
END로 끝을 낸다.

------------------------
위의 설명을 기반으로 하여 문제를 풀어보면 아래와 같은 결과를 도출할 수 있다.

1. 금액 1 = COL2의 값이 모두 300으로 출력됨
2. 금액 2 = COL2의 값이 모두 300으로 출력됨
3. 금액 3 = C의 COL2와 COL3이 같지 않으므로 C는 NULL로 출력됨
4. 금액4 = C의 COL2는 NULL이기 때문에 ELSE 조건으로 가서 COL2의 값이 모두 300으로 출력됨

따라서 정답은


 
직접 실행해보기

SELECT NVL(COL2, COL3) AS 금액1,
       COALESCE(COL2, COL3) AS 금액2,
       NULLIF(COL2, COL3) AS 금액3,
       CASE WHEN COL2 IS NOT NULL THEN COL2 ELSE COL3 END AS 금액4
FROM SQLD_11;

금액 3의 결과만 다른 것을 확인할 수 있

 


관련 스크립트

drop table sqld_11;

create  table  sqld_11
( col1    varchar2(10),
  col2    number(10),
  col3    number(10) );

insert  into  sqld_11  values('A', 300,  50 );
insert  into  sqld_11  values('B', 300, 150 );
insert  into  sqld_11  values('C', null, 300);
insert  into  sqld_11  values('D', 300, 100);

commit;

 
 
 
 
 
 
 
 
 
 

반응형