LC 速查

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';

数据表:Products · 关键字:求 2019-08-16 当天各产品的价格,当天前从未调价的产品按默认价 10 输出

← 上一题 连续出现的数字最后一个能进入公交车的人 下一题 →