网站速度,wordpress 多人博客,忻州市中小企业局网站,广州环保网站建设【Leetcode】高频SQL基础题–1164.指定日期的产品价格
要求#xff1a;一开始#xff0c;所有产品价格都为 10。编写一个解决方案#xff0c;找出在 2019-08-16 所有产品的价格。
以 任意顺序 返回结果表。解题思路#xff1a; 找到 2019-08-16 前所有有改动的产品及其最新…【Leetcode】高频SQL基础题–1164.指定日期的产品价格
要求一开始所有产品价格都为 10。编写一个解决方案找出在 2019-08-16 所有产品的价格。
以 任意顺序 返回结果表。解题思路 找到 2019-08-16 前所有有改动的产品及其最新价格如果没有更新那就是原始价格。 1、子查询先找到所有的产品 2、子查询再找到所有 2019-08-16 前有修改的产品和他们最新的价格 3、使用 左连接left join 将两个查询联合。使用ifnull(p2.new_price, 10)如果产品没有价格说明没有修改过设置为 10如果有价格设置为最新的价格。
代码
select p1.product_id, ifnull(p2.new_price, 10) as price
from (select distinct product_idfrom products
) as p1
left join (select product_id, new_price from productswhere (product_id, change_date) in (select product_id, max(change_date)from productswhere change_date 2019-08-16group by product_id)
) as p2
on p1.product_id p2.product_id