首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >「SQL面试题库」 No_72 指定日期的产品价格

「SQL面试题库」 No_72 指定日期的产品价格

作者头像
不吃西红柿
发布2023-05-23 17:17:57
发布2023-05-23 17:17:57
25800
代码可运行
举报
文章被收录于专栏:信息技术智库信息技术智库
运行总次数:0
代码可运行

🍅 1、今日真题

题目介绍: 指定日期的产品价格 product-price-at-a-given-date

难度中等

SQL架构

产品数据表:

代码语言:javascript
代码运行次数:0
运行
复制
Products
代码语言:javascript
代码运行次数:0
运行
复制
+---------------+---------+
| 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 | +------------+-------+ ```

```sql select distinct p.product_id,ifnull(t1.new_price,10) price from Products p left join ( select product_id,new_price from ( select product_id,new_price,change_date,Max(change_date) over(partition by product_id ) md from Products where change_date<='2019-08-16' )tmp where change_date = md )t1 on p. product_id = t1.product_id order by price desc

```

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🍅 1、今日真题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档