๋ฌธ์
https://leetcode.com/problems/product-price-at-a-given-date/
์ฝ๋
๋๋ ์คํจํ๊ณ
์ฌ๋ฌ ๋ธ๋ก๊ทธ ์ค์์ ๊ฐ์ฅ ๋ง์์ ๋ค์๋ ๋ต์
SELECT DISTINCT product_id, 10 as price FROM Products
GROUP BY 1
HAVING MIN(change_date) > '2019-08-16'
UNION
SELECT product_id, new_price FROM Products
WHERE (product_id, change_date) IN
(
SELECT product_id, MAX(change_date) as recent_date FROM Products
WHERE change_date <= '2019-08-16'
GROUP BY 1
)
๋ฌธ์ ํ์ด
1. 16์ผ ์ด์ ๋ณ๊ฒฝ์ด ๊ฐ์ฅ ์ต์ ์ธ ๊ฒ๊ณผ
2. 16์ผ ์ด์ ๋ณ๊ฒฝ ์กด์ฌ + 16์ผ ์ดํ ๋ณ๊ฒฝ์ด ๊ฐ์ฅ ์ต์ ์ธ ๊ฒ
3. 16์ผ ์ดํ ๋ณ๊ฒฝ์ด ๊ฐ์ฅ ์ต์ + ์ต์ด์ธ ๊ฒ
์ด๋ ๊ฒ ์ผ์ด์ค๊ฐ ๋๋๋๋ฐ
1๋ฒ์ ๊ทธ๋ฅ max()๋ก ๊ตฌํ๋ฉด ๋๋๋ฐ
2๋ฒ์ 16์ผ ์ด์ max()๋ฅผ ๊ตฌํด์ผ ๋๋ค
3๋ฒ์ 10์ด๋ผ๋ ๊ฐ์ ๋ฃ์ด์ค์ผ ๋๋ค
์ด ์ธ๊ฐ์ง๋ฅผ ๋ค ์ถฉ์กฑ์ํค๊ธฐ ์ํด์ ์ด์ฌํ ์งฑ๊ตฌ๋ฅผ ๊ตด๋ ธ์ง๋ง ์คํจํจ
๊ฒฐ๊ตญ ์ ๋ต์ union์ ์ฌ์ฉํ๋ ๊ฑฐ์๋ค.
1๋ฒ 2๋ฒ์ ๊ตฌํ๋ ํ ์ด๋ธ๊ณผ 3๋ฒ์ ๊ตฌํ๋ ํ ์ด๋ธ์ union ์์ผ์ฃผ๋ฉด ์ ๋ต์ ๊ตฌํ ์ ์๋ค!
๊ทธ๋ฆฌ๊ณ select ์ ์ ๊ทธ๋ฅ ์ซ์๋ฅผ ๋ฃ์ด์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์๋ ๊ฒ๋ ์ฒ์ ์์๋ค
๋๋ ์
union ... ์ ์ฌ์ฉํ ์๊ฐ์ ๋ชปํ์๊น ..
