SQL - 문제 미리보기
문제 1662
hard
다음 중 FULL OUTER JOIN을 사용하는 것이 가장 적절한 상황은?
정답: C
FULL OUTER JOIN의 최적 활용 시나리오:
• 데이터 동기화: 두 시스템 간 완전한 데이터 비교
• 무결성 검사: 모든 불일치 및 누락 데이터 확인
• 마이그레이션: 기존 시스템과 신규 시스템 간 데이터 검증
• 감사(Audit): 전체 데이터 상태 종합 점검
각 선택지 분석:
1번 (주문한 고객 정보) - INNER JOIN 적절:
```sql
-- INNER JOIN으로 충분
SELECT c.CustomerName, o.OrderID
FROM Customers c
INNER JOIN Orders o ON c.CustomerID = o.CustomerID;
```
2번 (모든 고객 주문 현황) - LEFT JOIN 적절:
```sql
-- LEFT JOIN으로 충분
SELECT c.CustomerName, COUNT(o.OrderID) AS OrderCount
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID
GROUP BY c.CustomerID, c.CustomerName;
```
3번 (데이터 동기화 점검) - FULL OUTER JOIN 최적:
```sql
-- 시스템 A와 시스템 B 간 고객 데이터 동기화 검사
SELECT
COALESCE(a.customer_id, b.customer_id) AS customer_id,
a.customer_name AS system_a_name,
b.customer_name AS system_b_name,
CASE
WHEN a.customer_id IS NULL THEN 'Missing in System A'
WHEN b.customer_id IS NULL THEN 'Missing in System B'
WHEN a.customer_name <> b.customer_name THEN 'Name Mismatch'
ELSE 'Synchronized'
END AS sync_status
FROM system_a_customers a
FULL OUTER JOIN system_b_customers b ON a.customer_id = b.customer_id;
```
4번 (매출 TOP 10) - 집계 쿼리 적절:
```sql
-- GROUP BY와 ORDER BY로 해결
SELECT c.CustomerName, SUM(o.Amount) AS TotalSales
FROM Customers c
INNER JOIN Orders o ON c.CustomerID = o.CustomerID
GROUP BY c.CustomerID, c.CustomerName
ORDER BY TotalSales DESC
LIMIT 10;
```
💡 학습 팁
이 문제를 포함한 SQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.