다음 고객 테이블에 대한 SQL 구문에서 실행 결과가 다른 하나는? (… | [7급 국가직 데이터베이스론] 23년 1회차 기출문제 상세 페이지
1[7급 국가직 데이터베이스론] 23년 1회차
다음 고객 테이블에 대한 SQL 구문에서 실행 결과가 다른 하나는? (단, 밑줄 친 속성은 기본 키이다)
고객
| 고객ID | 고객이름 | 등급 | 적립금 |
|---|---|---|---|
| k123 | 김상중 | Gold | 3000 |
| l018 | 이영우 | Vip | 4000 |
| c389 | 최영 | Gold | 3000 |
| p273 | 박구연 | Silver | 2000 |
| h328 | 홍연수 | Vip | 5000 |
| j451 | 정영상 | Silver | 3000 |
| y524 | 윤성진 | Gold | 2000 |
1
SELECT 고객이름
FROM 고객
WHERE 적립금 = (SELECT MAX(적립금) FROM 고객);
2
SELECT 고객이름
FROM 고객
WHERE 적립금 >= ALL (SELECT 적립금 FROM 고객);
3
SELECT 고객이름
FROM 고객
WHERE 적립금 > ANY (SELECT 적립금 FROM 고객
WHERE 등급 = ‘Vip’);
4
SELECT 고객이름
FROM 고객
WHERE 적립금 IN (SELECT 적립금 FROM 고객
WHERE 등급 = ‘Vip’);
해설
결과가 다른 것은 IN 부속질의를 쓴 구문이다.
Vip 등급의 적립금은 4000, 5000이므로 IN 조건은 적립금이 4000 또는 5000인 이영우, 홍연수를 반환한다.
- MAX(적립금)과 같은지 비교: 최댓값 5000인 홍연수만 반환한다.
- >= ALL: 모든 적립금 이상인 값은 5000뿐이므로 홍연수만 반환한다.
- Vip 적립금에 대한 > ANY: 4000, 5000 중 하나라도 초과하면 되므로 4000 초과인 홍연수만 반환한다.
오류나 개정된 내용이 보이면 알려주세요