객실마다 가장 늦은 예약일의 금액을 모든 행에 붙여 다음 [결과]를 얻… | [SQLD] SQL 개발자 기출유형 모의고사 2회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 2회
객실마다 가장 늦은 예약일의 금액을 모든 행에 붙여 다음 [결과]를 얻으려 한다. ( ㉠ )에 들어갈 식으로 옳은 것은?

[예약]

예약번호객실예약일금액
1R12026-05-01120
2R12026-05-03150
3R12026-05-07130
4R22026-05-02200
5R22026-05-06180
SELECT 예약번호, 객실, 금액, ( ㉠ ) AS 마지막금액
  FROM 예약
 ORDER BY 예약번호;

[결과]

예약번호객실금액마지막금액
1R1120130
2R1150130
3R1130130
4R2200180
5R2180180

[후보]

(가) LEAD(금액) OVER (PARTITION BY 객실 ORDER BY 예약일)
(나) LAST_VALUE(금액) OVER (PARTITION BY 객실 ORDER BY 예약일)
(다) LAST_VALUE(금액) OVER (PARTITION BY 객실 ORDER BY 예약일
       ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)
(라) FIRST_VALUE(금액) OVER (PARTITION BY 객실 ORDER BY 예약일 DESC)
1
(다)
2
(가)
3
(나)
4
(라)
해설

예약일 내림차순 파티션의 첫 값이 곧 가장 늦은 예약 금액이므로 FIRST_VALUE … ORDER BY 예약일 DESC가 R1 모든 행에 130, R2 모든 행에 180을 붙인다.

ORDER BY만 둔 윈도우의 기본 프레임은 현재 행까지라서 LAST_VALUE를 그대로 쓰면 자기 금액이 나온다.

  • LEAD는 다음 예약 금액을 돌려주고 마지막 행은 NULL이다.
  • 기본 프레임의 LAST_VALUE는 현재 행 금액과 같다.
  • 1 FOLLOWING까지인 프레임은 다음 행 금액이라 예약번호 1·4가 150·180이 된다.

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

이어서 풀어보기

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