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

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

문제

다음 [성적] 테이블에서 SQL문을 실행했을 때, 이름이 '이'인 행의 prev_score 값을 쓰시오.

이름학년점수
180
190
185
275
295
SQL
SELECT 이름, 학년, 점수, LAG(점수, 1, 0) OVER (PARTITION BY 학년 ORDER BY 이름) AS prev_score FROM 성적;

정답

80

80

해설

  1. PARTITION BY 학년으로 1학년과 2학년이 각각 분할됩니다.
  2. ORDER BY 이름으로 이름을 가나다 순으로 정렬하면, 1학년 파티션에서는 김 → 이 → 박 순으로 정렬됩니다.
  3. LAG(점수, 1, 0)는 현재 행의 이전 행에서 점수 값을 가져오며, 이전 행이 없으면 기본값 0을 반환합니다.
  4. 이름이 '이'인 행은 1학년 파티션에서 두 번째 위치(김 → 이)에 있으므로, 이전 행은 '김'입니다.
  5. 따라서 '이'의 prev_score는 이전 행인 '김'의 점수인 80이 됩니다.

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

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