다음 SQL 의 실행 결과로 옳은 것은?[모의평가]학생회차점수민준170… | [SQLD] SQL 개발자 기출유형 모의고사 7회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 7회
다음 SQL 의 실행 결과로 옳은 것은?

[모의평가]

학생회차점수
민준170
민준285
민준380
서연190
서연295
SELECT 학생, 회차,
       FIRST_VALUE(점수) OVER (PARTITION BY 학생 ORDER BY 회차
         ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS A,
       LAST_VALUE(점수) OVER (PARTITION BY 학생 ORDER BY 회차
         ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS B
  FROM 모의평가
 ORDER BY 학생, 회차;
1
학생회차AB
민준17085
민준27080
민준37080
서연19095
서연29095
2
학생회차AB
민준1(null)85
민준27080
민준38580
서연1(null)95
서연29095
3
학생회차AB
민준17085
민준27080
민준385(null)
서연19095
서연290(null)
4
학생회차AB
민준17085
민준27080
민준38580
서연19095
서연29095
해설

A 는 직전 행~현재 행 프레임의 첫 값, B 는 현재 행~다음 행 프레임의 끝 값이므로 민준 3회차는 A=85·B=80 이 된다.

파티션 첫 행은 프레임에 자기 자신만 있어 A 가 자기 점수이고, 마지막 행도 B 가 자기 점수라서 NULL 이 생기지 않는다.

  • 첫 행 A 가 NULL 인 표는 FIRST_VALUE 를 LAG 처럼 본 결과이다.
  • 마지막 행 B 가 NULL 인 표는 LAST_VALUE 를 LEAD 처럼 본 결과이다.
  • 민준 3회차 A 가 70 인 표는 프레임을 무시하고 파티션 첫 값을 쓴 결과이다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 7회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기