728x90
매일 SQLD 기출 문제 풀기 챌린지
문제10.
다음 보기 중 SQL의 결과와 다른 것은?
테이블명 : SQLD_10
NUM | CODE | COL1 | COL2 |
1 | A | 100 | 350 |
2 | A | 130 | 300 |
3 | B | 150 | 400 |
4 | A | 200 | 300 |
5 | B | 250 | 200 |
6 | A | 300 | 150 |
① SELECT *
FROM SQLD_10
WHERE 1=1 AND CODE IN('A','B') AND COL1 BETWEEN 200 AND 400;
② SELECT *
FROM SQLD_10
WHERE 1=1
AND (CODE='A' AND 200 BETWEEN COL1 AND COL2)
OR (CODE='B' AND 200 BETWEEN COL1 AND COL2);
③ SELECT *
FROM SQLD_10
WHERE 1=1 AND 200 BETWEEN COL1 AND COL2;
④ SELECT *
FROM SQLD_10
WHERE 1=1 AND COL1 <= 200 AND COL2 >= 200;
해설해보기
#1번
WHERE 조건절을 살펴보면
1=1 즉 TRUE이고,
(AND) CODE컬럼에 A나 B가 있으며,
(AND) COL1의 값이 200~400사이에 해당하는 값들을 출력하는 것
(단, BETWEEN 200 AND 400은 200과 400도 포함된다)
따라서 NUM이 4,5,6인 행이 출력된다.
#2번
WHERE 조건절을 살펴보면
1=1 즉 TRUE이고,
(AND) CODE = A이면서 COL1과 COL2의 각각의 값 사이에 200이 있는 값 이거나 ,
(OR) CODE = B 이면서 COL1과 COL2의 각각의 값 사이에 200이 있는 행 출력
예를들어,
NUM 1 인 COL1 : 100 과 COL2 : 350 사이에 200이 있으므로 해당됨
따라서 NUM이 1,2,3,4인 행이 출력된다.
#3번
WHERE 조건절을 살펴보면
1=1 즉 TRUE이고,
(AND) COL1과 COL2의 각각의 값 사이에 200이 있는 값이 있는 행 출력
따라서 NUM 1,2,3,4인 행이 출력된다.
#4번
WHERE 조건절을 살펴보면
1=1 즉 TRUE이고,
(AND) COL1이 200이하이고, = NUM 1,2,3,4
(AND) COL2이 200이상인 값이 있는 행 출력 = NUM 1,2,3,4,5
and이므로 두가지 모두에 해당하는 것은 num 1,2,3,4
따라서 NUM 1,2,3,4
결과적으로 SQL의 실행결과가 다른 것은
①
직접 실행해보기
#1번 실행
# 1번
SELECT *
FROM SQLD_10
WHERE 1=1 AND CODE IN('A','B') AND COL1 BETWEEN 200 AND 400;
#2,3,4 실행
# 2번, 3번, 4번
SELECT *
FROM SQLD_10
WHERE 1=1
AND (CODE='A' AND 200 BETWEEN COL1 AND COL2)
OR (CODE='B' AND 200 BETWEEN COL1 AND COL2);
SELECT *
FROM SQLD_10
WHERE 1=1 AND 200 BETWEEN COL1 AND COL2;
SELECT *
FROM SQLD_10
WHERE 1=1 AND COL1 <= 200 AND COL2 >= 200;
관련 스크립트
create table sqld_10
( num number(10),
code varchar2(5),
col1 number(10),
col2 number(10) );
insert into sqld_10 values( 1, 'A', 100, 350);
insert into sqld_10 values( 2, 'A', 130, 300);
insert into sqld_10 values( 3, 'B', 150, 400);
insert into sqld_10 values( 4, 'A', 200, 300);
insert into sqld_10 values( 5, 'B', 250, 200);
insert into sqld_10 values( 6, 'A', 300, 150);
commit;
반응형
'SQL 문제 풀기 > 2. SQLD 기출 : 2024.3.01~2024.4.25' 카테고리의 다른 글
<SQLD 12> 논리 연산자 AND와 OR의 우선순위 기출문제 (4) | 2024.03.12 |
---|---|
<SQLD 11> Null 값 처리하는 일반함수 기출문제 (0) | 2024.03.11 |
<SQLD 9> 문자함수와 날자 함수에 대한 기출문제 (0) | 2024.03.09 |
<SQLD 8>숫자함수 round 함수에 대한 기출문제 (0) | 2024.03.08 |
<SQLD 7> 문자 함수 이해에 대한 기출문제 (0) | 2024.03.07 |