정보처리기사 실기SQLSQL - 윈도우 함수난이도 5SHORT_ANSWER

정보처리기사 실기 SQL - 윈도우 함수 기출문제 #354

문제

다음 [성과] 테이블에서 SQL문을 실행했을 때, 직원명이 '이순신'인 행의 max_score 값을 쓰시오.

직원명부서점수
홍길동영업90
이순신영업85
김철수개발95
박영희개발88
최민수개발92
SQL
SELECT 직원명, MAX(점수) OVER (PARTITION BY 부서 ORDER BY 점수 DESC ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS max_score FROM 성과;

정답

90

90

해설

MAX() OVER 윈도우 함수가 PARTITION BY 부서로 파티션을 나누고, ORDER BY 점수 DESC로 내림차순 정렬한다. ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING은 현재 행 기준 앞뒤 1개 행씩 총 3개 행의 범위를 의미한다. 영업 부서에서 점수 내림차순 정렬 시 홍길동(90), 이순신(85) 순이다. 이순신의 경우 1 PRECEDING(홍길동:90), CURRENT ROW(이순신:85), 1 FOLLOWING(없음) 범위에서 최댓값은 90이다.

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

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