23-1[판매] 테이블을 품목별로 묶어, 평균 수량이 30 이상인 품목… | 2023년 정보처리기사실기 1회차 기출문제 상세 페이지
13
23-1
[판매] 테이블을 품목별로 묶어, 평균 수량이 30 이상인 품목과 그 품목의 최소 수량·최대 수량을 조회하려 한다. [조건]을 지켜 SQL 문을 작성하시오.
[판매]
| 순번 | 품목 | 수량 |
|---|---|---|
| 1 | 커피 | 42 |
| 2 | 녹차 | 18 |
| 3 | 커피 | 38 |
| 4 | 주스 | 25 |
| 5 | 녹차 | 22 |
| 6 | 주스 | 31 |
| 7 | 커피 | 40 |
[결과]
| 품목 | 최소수량 | 최대수량 |
|---|---|---|
| 커피 | 38 | 42 |
[조건]
- ISO/IEC 9075 표준 SQL로 작성한다.
- WHERE 절은 쓰지 않는다.
- GROUP BY와 HAVING을 반드시 사용한다.
- 집계 함수를 사용하고, SELECT 절의 집계 결과에는 [결과]와 같은 별칭을 붙인다.
- 문장 끝의 세미콜론(;)은 생략해도 된다.
해설
SELECT 품목, MIN(수량) AS 최소수량, MAX(수량) AS 최대수량 FROM 판매 GROUP BY 품목 HAVING AVG(수량) >= 30;
[해설]
그룹 단위 조건은 WHERE가 아니라 GROUP BY 품목 HAVING AVG(수량) >= 30으로 건다. WHERE는 그룹을 만들기 전의 개별 행에만 적용된다.
- 커피: (42+38+40)/3 = 40 → 조건 충족
- 녹차: (18+22)/2 = 20 → 제외
- 주스: (25+31)/2 = 28 → 제외
남은 커피 그룹에서 MIN(수량) AS 최소수량은 38, MAX(수량) AS 최대수량은 42다. AS는 생략해도 표준상 별칭으로 인정된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.