Tools/- SQL

[SQL] leetcode | 1164. Product Price at a Given Date ์˜ˆ์ œ ํ’€์ด

์Šค์œ„๋ฏผ 2025. 1. 24. 19:06

๋ฌธ์ œ

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 ...  ์™œ ์‚ฌ์šฉํ•  ์ƒ๊ฐ์„ ๋ชปํ–ˆ์„๊นŒ ..