Products
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| product_id | int |
| new_price | int |
| change_date | date |
+---------------+---------+
(product_id, change_date)는 이 테이블의 기본 키(고유 값을 가진 열의 조합)입니다.
이 테이블의 각 행은 특정 제품의 가격이 특정 날짜에 새 가격으로 변경되었음을 나타냅니다.
2019-08-16에 모든 제품의 가격을 구하는 솔루션을 작성합니다. 변경 전 모든 제품의 가격이 10이라고 가정합니다.
결과 테이블을 임의의 순서로 반환합니다.
WITH TMP_TB AS ( SELECT product_id, change_date, new_price AS price, RANK() OVER(PARTITION BY product_id ORDER BY change_date DESC) AS RANKING FROM Products WHERE change_date <= '2019-08-16' ) -- 2019-08-16 이후 데이터 + 2019-08-16 이전 데이터 기록X SELECT product_id, 10 AS price FROM Products WHERE product_id NOT IN (SELECT product_id FROM TMP_TB) UNION -- 2019-08-16 이전 + 가장 최근에 변경된 데이터 SELECT product_id, price FROM TMP_TB WHERE RANKING = 1 ;