1164. Product Price at a Given Date : leetcode

오유찬·2026년 1월 7일

SQL

목록 보기
38/71

갱신을 해나가는 테이블
가장 최신 날짜에서의 데이터 값을 출력

  • product_id로 그룹화 → 그룹화 내에서는 특정 조건으로 분류 불가
  • window function으로 그룹별로 나눠서 날짜 순으로 정렬한 다음에 최상단 값 호출
  • 해당 값이 없을 경우 default로 10 설정 - UNION ALL
    - 중복값 없도록WHERE절로 조건 설정하기 <날짜를 경계선으로>
WITH cte 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  product_id, price FROM cte 
UNION ALL
SELECT  product_id, 10 as price FROM Products
GROUP BY product_id
HAVING MIN(change_date) > '2019-08-16'

profile
열심히 하면 재밌다

0개의 댓글