문제
다음 중 아래 <사원> 테이블에 대한 SQL문의 실행 결과로 옳은 것은?
| 사번 | 부서 | 직급 | 급여 |
|---|---|---|---|
| 201 | 영업 | 대리 | 320 |
| 202 | 인사 | 대리 | 380 |
| 203 | 영업 | 사원 | 300 |
| 204 | 영업 | 대리 | 360 |
| 205 | 영업 | 과장 | 500 |
| 206 | 인사 | 사원 | 290 |
SELECT AVG([급여]) FROM 사원 WHERE 부서="영업" GROUP BY 직급 HAVING COUNT(*) >= 2;
① 320 ② 340 ③ 360 ④ 380
정답
2번
해설
정답: 2. WHERE로 부서가 ‘영업’인 행만 남기면 대리(320·360), 사원(300), 과장(500)이 남는다. 직급별로 묶어 HAVING COUNT(*)>=2를 적용하면 2명인 대리 그룹만 남고, 그 평균은 (320+360)/2=340이 된다.
오답 풀이
- 1번: 320은 대리 중 한 명의 급여일 뿐 평균이 아니다.
- 2번: 대리 그룹만 조건을 만족하며 평균이 340이므로 옳다.
- 3번: 360도 대리 한 명의 급여일 뿐 평균이 아니다.
- 4번: 380은 부서가 인사라 WHERE 조건에서 제외된다.
보충 개념 WHERE는 그룹화 전에 행을 거르고, HAVING은 그룹화 후 집계 결과를 거른다. 사원·과장 그룹은 인원이 2명 미만이라 제외된다.