SQL - 문제 미리보기
문제 1681
hard
다음 쿼리에서 빈칸에 들어갈 올바른 구문은?
```sql
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
______ ShipperName;
```
정답: C
복합 쿼리 구조의 단계별 분석:
쿼리 구성 요소:
• FROM Orders: Orders 테이블을 기본으로 시작
• LEFT JOIN Shippers: Shippers 테이블과 외부 조인
• SELECT: 배송업체명과 주문 건수(COUNT)를 조회
• AS NumberOfOrders: COUNT 결과에 별칭 부여
GROUP BY가 필요한 핵심 이유:
1. 집계 함수 사용: COUNT(Orders.OrderID)로 주문 건수 계산
2. 비집계 컬럼 포함: ShipperName이 SELECT에 포함됨
3. 그룹화 필요: 각 배송업체별로 주문 건수를 따로 계산해야 함
실행 과정:
1. Orders와 Shippers 테이블을 LEFT JOIN으로 연결
2. ShipperName으로 그룹화 (같은 배송업체끼리 묶기)
3. 각 그룹별로 주문 건수(COUNT) 계산
4. (배송업체명, 주문건수) 형태로 결과 반환
JOIN과 GROUP BY 조합의 특징:
• JOIN으로 테이블을 연결한 후 GROUP BY로 집계
• 실무에서 매우 자주 사용되는 패턴
• "각 카테고리별 상품 수", "각 부서별 직원 수" 등에 활용
💡 학습 팁
이 문제를 포함한 SQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.