当前位置: 代码迷 >> 综合 >> LeetCode MySQL 1164. 指定日期的产品价格 *
  详细解决方案

LeetCode MySQL 1164. 指定日期的产品价格 *

热度:59   发布时间:2024-01-31 22:44:55.0

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

产品数据表: Products

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| product_id    | int     |
| new_price     | int     |
| change_date   | date    |
+---------------+---------+
这张表的主键是 (product_id, change_date)

这张表的每一行分别记录了 某产品 在某个日期 更改后 的新价格

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

查询结果格式如下例所示:

Products table:
+------------+-----------+-------------+
| 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    |
+------------+-------+

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/product-price-at-a-given-date
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

# Write your MySQL query statement below
select t1.product_id, ifnull(t2.new_price, 10) price
from
(select distinct product_id from Products
) t1
left join
(select product_id, new_pricefrom Productswhere (product_id, change_date) in(select product_id, max(change_date) change_datefrom Productswhere change_date <= '2019-08-16'group by product_id)
) t2
on t1.product_id = t2.product_id

我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

  相关解决方案