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

测试结果

相关推荐
2601_962218614 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
吞下星星的少年·-·4 小时前
The 2026 ICPC Asia East Continent Online Contest (II)(构造)
数据结构·算法
李高钢5 小时前
Python FastAPI 框架入门:从零搭建你的第一个高性能 API 服务
数据库·python·fastapi
多加点辣也没关系5 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
stolentime6 小时前
洛谷P10515 转圈题解
c++·算法·数学建模·贪心算法
yuzhiboyouye7 小时前
那xml对应的sql语法,列举一下
xml·数据库·sql
和裕7 小时前
蜂窝板 vs 七层瓦楞重型纸箱:大件工业设备运输性能与成本全对比
大数据·运维·网络·人工智能·算法
. . . . .7 小时前
乐观锁 vs 悲观锁
数据库·sql
衡石科技7 小时前
Data_Agent记忆机制与经验复用衡石分析智能体会话记忆与长期学习技术解析
人工智能·科技·学习·算法·企业级bi
Leo.yuan7 小时前
2026年多数据库实时同步的四种架构方案及工具推荐
数据库·架构