다음 결과를 얻기 위해 ( ㉠ )에 들어갈 연산자로 옳은 것은?[도서]… | [SQLD] SQL 개발자 기출유형 모의고사 5회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 5회
다음 결과를 얻기 위해 ( ㉠ )에 들어갈 연산자로 옳은 것은?[도서]
| 도서번호 | 분류 | 가격 |
|---|---|---|
| 1 | 과학 | 18000 |
| 2 | 과학 | 25000 |
| 3 | 과학 | (null) |
| 4 | 문학 | 15000 |
| 5 | 문학 | 22000 |
| 6 | 역사 | 30000 |
| 7 | 역사 | 18000 |
SELECT 도서번호, 분류, 가격
FROM 도서
WHERE 분류 IN ('문학', '역사')
AND 가격 ( ㉠ ) (SELECT 가격
FROM 도서
WHERE 분류 = '과학')
ORDER BY 도서번호;[결과]
| 도서번호 | 분류 | 가격 |
|---|---|---|
| 5 | 문학 | 22000 |
| 6 | 역사 | 30000 |
1
IN
2
> ALL
3
> ANY
4
NOT IN
해설
결과는 과학 도서 가격 중 어느 하나보다만 커도 참이 되는
> ANY조건, 즉 최솟값 18000 을 넘는 행이다.ANY 는 서브쿼리의 NULL 을 무시하고 하나라도 참이면 통과하므로 22000·30000 은 남고 18000 은 같아서 빠진다.
> ALL은 서브쿼리에 NULL 이 있어 모든 비교가 참이 될 수 없으므로 0행이다.IN은 값이 같은 행만 고르므로 가격이 18000 인 도서번호 7 만 나온다.NOT IN도 서브쿼리 결과에 NULL 이 있어 모든 비교가 UNKNOWN 이 되므로 0행이다.
오류나 개정된 내용이 보이면 알려주세요