LeetCode:Database 62.指定日期的产品价格

Posted Xiao Miao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:Database 62.指定日期的产品价格相关的知识,希望对你有一定的参考价值。

要求:写一段 SQL来查找在 2019-08-16 时全部产品的价格,假设所有产品在修改前的价格都是 10。

Products 表的结构:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| product_id    | int     |
| new_price     | int     |
| change_date   | date    |
+---------------+---------+
这张表的主键是 (product_id, change_date)。
这张表的每一行分别记录了 某产品 在某个日期 更改后 的新价格。

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  |
+------------+-----------+-------------+

Result Table:

+------------+-------+
| product_id | price |
+------------+-------+
| 2          | 50    |
| 1          | 35    |
| 3          | 10    |
+------------+-------+

SQL语句:

with b as(
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 r
from products 
where change_date<='2019-08-16')a 
where r=1)

select * from b
union all
select distinct product_id,10 as price
from products
where product_id not in(select product_id from b);

以上是关于LeetCode:Database 62.指定日期的产品价格的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode:Database 104.按日期分组销售产品

LeetCode:Database 71.报告系统状态的连续日期

LeetCode:Database 81.餐馆营业额变化增长

LeetCode:Database 04.上升的温度

LeetCode:Database 50.每日新用户统计

LeetCode:Database 63.即时食物配送 I