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;
```
```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의 적절한 사용법:
첫 번째 빈칸 분석:
• 조건: `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 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.