모두CBT

23-1[판매] 테이블을 품목별로 묶어, 평균 수량이 30 이상인 품목… | 2023년 정보처리기사실기 1회차 기출문제 상세 페이지

13

23-1

[판매] 테이블을 품목별로 묶어, 평균 수량이 30 이상인 품목과 그 품목의 최소 수량·최대 수량을 조회하려 한다. [조건]을 지켜 SQL 문을 작성하시오.

[판매]

순번품목수량
1커피42
2녹차18
3커피38
4주스25
5녹차22
6주스31
7커피40

[결과]

품목최소수량최대수량
커피3842

[조건]

  • 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는 생략해도 표준상 별칭으로 인정된다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.