SQL 50 › 索引 › A5 Advanced Select and Joins 高级查询与连接
LC 1164指定日期的产品价格Product Price at a Given Date 中等
Products 表记录每次调价(产品、新价、日期);求 2019-08-16 当天各产品的价格,当天前从未调价的产品按默认价 10 输出。
思路 ROW_NUMBER 取最后一次调价 UNION ALL 未调价产品默认 10。
SELECT product_id, new_price AS price FROM ( SELECT product_id, new_price, ROW_NUMBER() OVER ( PARTITION BY product_id ORDER BY change_date DESC) AS rn FROM Products WHERE change_date <= '2019-08-16' ) T WHERE rn = 1 UNION ALL SELECT product_id, 10 AS price FROM Products GROUP BY product_id HAVING MIN(change_date) > '2019-08-16';