49. Product Price at a Given Date
https://leetcode.com/problems/product-price-at-a-given-date/
Write a solution to find the prices of all products on 2019-08-16. Assume the price of all products before any change is 10.
with temp as ( select product_id, max(change_date) max_date from Products where change_date <= '2019-08-16' group by product_id ) select p.product_id, new_price price from Products p join temp t on p.product_id=t.product_id and p.change_date=t.max_date union all select product_id, 10 as price from Products group by product_id having min(change_date) > '2019-08-16' order by product_id
최근 change_date에 따른 가격을 반영하는 것이 중요. with문을 통해서 기준일(2019-08-16) 포함 이전의 물건 가격은 가장 최근에 변경된 가격을 기준으로 선정하며, 이후 union all로 붙인 쿼리를 통해서 기준일 이전 가격이 없다면 가겨을 '10'으로 고정 Join을 통해서 최근 change_date 구하기가 중요! ★★