SQL-每日一题【1164. 指定日期的产品价格】

题目

产品数据表: Products

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

以 任意顺序 返回结果表。

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

示例 1:

解题思路

1.题目要求我们查找在 2019-08-16 时全部产品的价格,假设所有产品在修改前的价格都是 10 。我们可以分成2部分来进行查询。

2.把第一次change_date在2019-08-16之后的单独分出来,这部分的price肯定是10,因为初始值是10。我们先将记录按照 product_id 进行分组,然后找出每一组中最小的 change_date 都小于2019-08-16的记录,它们的price就为10。

3.剩下的作为另外一部分, 另外一部分中,选出在2019-08-16之前最大的那天的price作为最终price。首先将记录按 product_id进行分组,然后找出每一组中最大的change_date <= 2019-08-16的记录,它们的price就为 new_price ,最后两部分做union即可。

代码实现

sql 复制代码
(select product_id , 10 as price
from Products
group by product_id
having min(change_date)>'2019-08-16')
union
(select product_id, new_price as price
from Products
where(product_id, change_date) in
                                (select product_id, max(change_date) as change_date
                                from Products
                                where change_date <= '2019-08-16'
                                group by product_id))

测试结果

相关推荐
YH55269842 小时前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
智购科技智能售货柜2 小时前
2026自动售货机整机可靠性测试:从高低温交变到EMC电磁兼容的认证工程实践~YH
运维·服务器·数据库·人工智能·物联网
ltl2 小时前
RocksDB 架构演进:相对 LevelDB 的 diff 地图
数据库
ltl2 小时前
存储读取性能优化:索引、Bloom Filter 与读放大
数据库
遥感知识服务4 小时前
从局部阈值、双极化到暗地表剔除:NASA OPERA DSWx-S1全球动态水体算法拆解
大数据·人工智能·深度学习·神经网络·算法·机器学习
晚风醉蝶4 小时前
1-13-TimSort
算法
ZJU_统一阿萨姆4 小时前
【算子开发】算子融合与Softmax_LayerNorm实现
人工智能·算法·语言模型·硬件架构
研☆香6 小时前
聊一聊前端的常见字 关键字
开发语言·前端·javascript
叩码以求索6 小时前
浅谈:前序遍历反转法求解N叉树的后序遍历
算法