SQLDSQL 활용윈도우 프레임난이도 4MCQ

SQLD 윈도우 프레임 기출문제 #3842

문제

아래 설명을 만족하는 SQL로 알맞은 것은?

<지문> 부서별로 연봉을 오름차순 정렬하고, 현재 연봉 기준 -100부터 +200 사이의 연봉자 수를 구한다.

① SELECT emp_id, salary, COUNT() OVER (PARTITION BY dep_id ORDER BY salary ROWS BETWEEN 100 PRECEDING AND 200 FOLLOWING) AS salary_count FROM emp ② SELECT emp_id, salary, COUNT() OVER (PARTITION BY dep_id ORDER BY salary RANGE BETWEEN 100 PRECEDING AND 200 FOLLOWING) AS salary_count FROM emp ③ SELECT emp_id, salary, COUNT() OVER (PARTITION BY dep_id) AS salary_count FROM emp ④ SELECT emp_id, salary, COUNT() OVER (ORDER BY salary RANGE BETWEEN 100 PRECEDING AND 200 FOLLOWING) AS salary_count FROM emp

정답

2

해설

정답: 2. 연봉 값의 범위 -100부터 +200 사이를 기준으로 세야 하므로 ROWS가 아니라 RANGE를 사용하고, 부서별 계산을 위해 PARTITION BY dep_id가 필요하다.

오답 풀이

  • 1번: ROWS는 물리적 행 수 기준이므로 연봉 값 범위 조건에 맞지 않는다.
  • 2번: 부서별 파티션과 연봉 값 범위 프레임을 올바르게 사용했다.
  • 3번: 부서 전체 건수만 계산하고 연봉 범위를 반영하지 않는다.
  • 4번: 부서별 파티션이 없어 전체 기준으로 계산된다.

보충 개념 ROWS는 행 개수 기준, RANGE는 ORDER BY 값의 논리적 범위 기준이다. 급여 ± 범위 같은 문제는 RANGE 프레임을 사용한다.

SQLD 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[SQLD] 윈도우 프레임 SQL 활용 기출 #3842 | 문어CBT