本文主要是介绍【LeetCode】1164. 指定日期的产品价格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
产品数据表: Products
+---------------+---------+ | Column Name | Type | +---------------+---------+ | product_id | int | | new_price | int | | change_date | date | +---------------+---------+ (product_id, change_date) 是此表的主键(具有唯一值的列组合)。 这张表的每一行分别记录了 某产品 在某个日期 更改后 的新价格。
编写一个解决方案,找出在 2019-08-16
时全部产品的价格,假设所有产品在修改前的价格都是 10
。
以 任意顺序 返回结果表。
结果格式如下例所示。
示例 1:
输入: Products 表: +------------+-----------+-------------+ | product_id | new_price | change_date | +------------+-----------+-------------+ | 1 | 20 | 2019-08-14 | | 2 | 50 | 2019-08-14 | | 1 | 30 | 2019-08-15 | | 1 | 35 | 2019-08-16 | | 2 | 65 | 2019-08-17 | | 3 | 20 | 2019-08-18 | +------------+-----------+-------------+ 输出: +------------+-------+ | product_id | price | +------------+-------+ | 2 | 50 | | 1 | 35 | | 3 | 10 | +------------+-------+
with cte1 as(select distinct(product_id) from Products
),
cte2 as(select product_id,new_price,change_date,dense_rank() over(partition by product_id order by change_date desc) as rnkfrom Productswhere change_date<='2019-08-16'
),
cte3 as(select product_id,new_price,change_datefrom cte2where rnk=1
)select cte1.product_id,ifnull(new_price,10) as price
from cte1
left join cte3
using(product_id)
这篇关于【LeetCode】1164. 指定日期的产品价格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!