SQL - 문제 미리보기

문제 1686

hard
다음 쿼리에서 빈칸에 들어갈 올바른 구문은?
```sql
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
______ LastName = 'Davolio' OR LastName = 'Fuller'
GROUP BY LastName
______ COUNT(Orders.OrderID) > 25;
```
A. `WHERE`, `HAVING`
B. `HAVING`, `WHERE`
C. `WHERE`, `WHERE`
D. `HAVING`, `HAVING`

정답: A


복합 쿼리에서 WHERE와 HAVING의 적절한 사용법:

첫 번째 빈칸 분석:

• 조건: `LastName = 'Davolio' OR LastName = 'Fuller'`
• 개별 직원의 성(LastName)에 대한 조건
• GROUP BY 이전에 특정 직원들만 선별하는 목적
• 결론: WHERE 사용 (개별 행 필터링)

두 번째 빈칸 분석:

• 조건: `COUNT(Orders.OrderID) > 25`
• 집계 함수 COUNT()에 대한 조건
• GROUP BY 이후 각 직원별 주문 건수를 기준으로 필터링
• 결론: HAVING 사용 (그룹 집계 결과 필터링)

전체 쿼리 실행 과정:

1. FROM & JOIN: Orders와 Employees 테이블 조인
2. WHERE: 'Davolio' 또는 'Fuller' 직원의 데이터만 선별
3. GROUP BY: 선별된 직원들을 LastName으로 그룹화
4. HAVING: 각 직원별 주문 건수가 25건 초과인 경우만 선택
5. SELECT: 직원명과 주문 건수 출력

WHERE vs HAVING 판단 기준:

• 개별 행의 컬럼 값 조건 → WHERE
• 집계 함수 결과 조건 → HAVING

💡 학습 팁

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