728x90
📚문제
📝풀이
# Write your MySQL query statement below
WITH p1 AS (
SELECT product_id
, new_price AS price
FROM Products
WHERE (product_id,change_date) IN (SELECT product_id
, MAX(change_date)
FROM Products
WHERE change_date <= '2019-08-16'
GROUP BY product_id))
SELECT *
FROM p1
UNION
SELECT DISTINCT product_id
, 10
FROM Products
WHERE product_id NOT IN (SELECT product_id FROM p1)
흠 간단하게 풀릴 줄 알았는데
생각보다 무지 어려웠다
UNION 해주어야 하는 것과
WHERE 절 서브쿼리를 사용해서 '2019-08-16' 기준으로 변화가 있는 id와 해당 id의 변경 최근날짜를 가져오는것까지는
알고 있었는데 한 번 꼬이고 안 풀리니까 잘 안보였다
그래서 구글링 살짝 참고 ...
UNION 해주는 테이블에서 왜 값을 10으로 넣어주는걸까 잠깐 고민했는데
'2019-08-16' 이전 기준으로 가격이 변경된 적이 없는 ID 이므로 가격을 모두 10으로 통일해준 것이다
728x90