모두CBT

출제 21-2다음과 같은 직원(사원번호, 부서명, 성명, 직급) 테이블… | [컴퓨터활용능력 1급 필기] 가끔 나오는 문제 · 최근 상시 회차 1회 출제 (331) 상세 페이지

1[컴퓨터활용능력 1급 필기] 가끔 나오는 문제 · 최근 상시 회차 1회 출제 (331)

출제 21-2

다음과 같은 직원(사원번호, 부서명, 성명, 직급) 테이블에서 부서별 인원수가 3명 이상인 부서명을 출력하는 질의문은?
문제 이미지
1
select 부서명 from 직원 having count(*)>=3 group by 부서명
2
select 부서명 from 직원 group by 부서명 having count(*)>=3
3
select 부서명 from 직원 where count(*)>=3 group by 부서명
4
select 부서명 from 직원 group by 부서명 where count(*)>=3
해설

올바른 질의문은 select 부서명 from 직원 group by 부서명 having count(*)>=3이다. 그룹별 집계 결과에 조건을 걸 때는 GROUP BY 뒤에 HAVING을 쓴다.

직원 테이블의 부서별 인원: 영업 4명(K001·K004·K008·K009), 관리 3명(K003·K005·K007), 총무 2명, 자재 1명
→ 결과는 영업, 관리 두 부서이다.

  • HAVING을 GROUP BY 앞에 쓰는 것은 SQL 구문 순서(SELECT–FROM–WHERE–GROUP BY–HAVING–ORDER BY)에 어긋난다.
  • WHERE 절은 그룹화 이전의 개별 행에 적용되므로 count(*) 같은 집계 함수를 쓸 수 없다.
  • WHERE를 GROUP BY 뒤에 두는 것도 구문 순서 오류이다.

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