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

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

문제

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

이름시험점수
중간80
중간75
중간85
기말90
기말82
기말78
SQL
SELECT 이름, 시험, 점수, LAG(점수, 1) OVER (PARTITION BY 이름 ORDER BY CASE WHEN 시험='중간' THEN 1 ELSE 2 END) AS prev_score FROM 성적;

정답

NULL

NULLnullNull

해설

LAG(점수, 1) 함수는 PARTITION BY 이름으로 각 학생별로 파티션을 나누고, ORDER BY로 중간시험(1), 기말시험(2) 순서로 정렬한다. 이름이 '이'인 파티션에서 중간시험 행은 첫 번째 행이 되므로, LAG 함수로 가져올 이전 행이 존재하지 않는다. 따라서 prev_score 값은 NULL이 된다.

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

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