SQL - 문제 미리보기

문제 1628

hard
다음 상황에서 가장 적절한 SQL 문은?

상황: 전체 고객이 91명이고, 주문한 적이 있는 고객이 74명이라면, 주문한 적이 없는 고객은 17명입니다. 이를 확인하는 쿼리를 작성하려고 합니다.
A. `SELECT COUNT(*) FROM Customers WHERE CustomerID IN (SELECT CustomerID FROM Orders);`
B. `SELECT COUNT(*) FROM Customers WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);`
C. `SELECT COUNT(*) FROM Orders WHERE CustomerID IN (SELECT CustomerID FROM Customers);`
D. `SELECT COUNT(*) FROM Orders WHERE CustomerID NOT IN (SELECT CustomerID FROM Customers);`

정답: B


문제 상황 분석:
• 목표: 주문한 적이 없는 고객 수 확인 (17명인지 검증)
• 조건: 전체 91명 - 주문 고객 74명 = 미주문 고객 17명

각 선택지 분석:

선택지 1:
```sql
SELECT COUNT(*) FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders);
```
의미: 주문한 적이 있는 고객 수
결과: 74명 (문제에서 구하려는 값이 아님)

선택지 2 (정답):
```sql
SELECT COUNT(*) FROM Customers
WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);
```
의미: 주문한 적이 없는 고객 수
결과: 17명 (문제에서 확인하려는 값) ✓

선택지 3:
```sql
SELECT COUNT(*) FROM Orders
WHERE CustomerID IN (SELECT CustomerID FROM Customers);
```
의미: 유효한 고객의 주문 수 (주문 건수)
결과: 주문 테이블의 레코드 수 (고객 수가 아님)

선택지 4:
```sql
SELECT COUNT(*) FROM Orders
WHERE CustomerID NOT IN (SELECT CustomerID FROM Customers);
```
의미: 존재하지 않는 고객의 주문 수
결과: 0건 (데이터 무결성이 유지된다면)

💡 학습 팁

이 문제를 포함한 SQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.