728x90
매일 SQLD 기출 문제 풀기 챌린지
문제 31.
다음 주어진 SQL문을 수행하였을 때의 결과가 아래와 같을 때 빈칸에 들어갈 것으로 알맞은 것은?
[ SQL ]
SELECT 10+20 * (( ? )(NULL, 0.1, 0.2))
FROM DUAL;
[ 결과 ]
14
[ 보기 ]
① IS NULL
② NVL
③ NVL2
④ COALESCE
해설해보기
1. A IS NULL
IS NULL은 주어진 표현식이 NULL 인 경우 TRUE를 반환한다.
따라서 특정 컬럼 A가 IS NULL 이어야 한다는 조건을 주기 위해서 사용한다.
2. NVL( A, B )
NVL()함수는 A값이 NULL이면 B를 출력하는 함수이다.
3. NVL2(A, B, C)
A가 NULL 아닌 경우 B를 반환하고,
A가 NULL인 경우 C를 반환하는 함수이다.
4. COALESCE( A, B )
COALESC() 함수는 A가 NULL이면 B를 출력하는 함수이다.
* NVL() vs COALESCE()
- COALESCE()함수는 COALESCE( A, B, C ) 가 가능하여
A가 NULL이면 B, B도 NULL이면 C를 실행할 수 있다
■ 함께 알아두면 좋은 함수
NULLIF( A, B )
A와 B가 같으면 NULL을 출력하고
A와 B가 같지 않으면 A를 출력한다
보기에 제시된 함수에 대한 설명을 확인한 후
SQL 문을 보면 답을 알 수 있습니다.
연산자 우선순위에 의해 더하기 보다 곱하기가 우선 수행되므로
10 + X = 14
X = 14 - 10 = 4
위와 같은 식을 얻을 수 있습니다.
즉, 함수로 인해 출력되야 하는 결과는 아래와 같은 것을 확인할 수 있습니다.
20 * Y = 4
Y = 4/20 = 0.2
( ? )(NULL, 0.1, 0.2) 에서 0.2가 출력되기 위해서는
첫 번째 인자가 NULL인 경우 세번째 인자가 출력되어야 합니다.
따라서 빈 칸에 적합한 함수는
NVL2 이기 때문에
정답은 ③ 입니다.
직접 실행해보기
SELECT 10+20 * (NVL2(NULL, 0.1, 0.2))
FROM DUAL;
반응형
'SQL 문제 풀기 > 2. SQLD 기출 : 2024.3.01~2024.4.25' 카테고리의 다른 글
<SQLD 33> 그룹 함수에 대한 기출문제 (0) | 2024.04.02 |
---|---|
<SQLD 32> 일반 함수에 대한 기출문제 (0) | 2024.04.01 |
<SQLD 30> ntile 함수에 대한 기출문제 (0) | 2024.03.30 |
<SQLD 29> reporting 함수에 대한 기출문제 (0) | 2024.03.29 |
<SQLD 28> row_number() 함수에 대한 기출문제 (0) | 2024.03.28 |