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;
관련 스크립트
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;
반응형
'SQL 문제 풀기 > 2. SQLD 기출 : 2024.3.01~2024.4.25' 카테고리의 다른 글
<SQLD 13> 컬럼 별칭 사용에 대한 기출문제 (0) | 2024.03.13 |
---|---|
<SQLD 12> 논리 연산자 AND와 OR의 우선순위 기출문제 (4) | 2024.03.12 |
<SQLD 10> 논리연산자 AND와 OR에 대한 기출문제 (0) | 2024.03.10 |
<SQLD 9> 문자함수와 날자 함수에 대한 기출문제 (0) | 2024.03.09 |
<SQLD 8>숫자함수 round 함수에 대한 기출문제 (0) | 2024.03.08 |