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

测试结果

相关推荐
hahaha60164 分钟前
Shades-of-Gray (SoG) 算法--白平衡算法
人工智能·嵌入式硬件·算法·计算机视觉
꯭自꯭闭꯭6 分钟前
DM7主备升级方案
linux·服务器·数据库
青山木16 分钟前
Hot 100 --- 编辑距离
java·数据结构·算法·leetcode·动态规划
蜗牛互联网22 分钟前
MongoDB Atlas Agent Engine之后,如何用版本门禁防止陈旧写入
java·数据库·人工智能·后端·mongodb
IvorySQL1 小时前
PostgreSQL 日报 |PostgreSQL 19 Beta 4 发布(9 月 25 日)
数据库·postgresql
夊1 小时前
C语言第十一课:指针(五)
算法
默_笙1 小时前
🚦 请三个 AI 考官给 RAG 打分:量化评估实战(下)
前端·javascript
小师兄吃牛肉1 小时前
C语言指针进阶全解析
java·c语言·算法
阿坨1 小时前
灵感闪存卡:一款 Tampermonkey用户脚本
javascript·tampermonkey
梦帮科技1 小时前
vLLM / TensorRT-LLM 极限推理:PagedAttention 细粒度物理页表管理与连续批处理(Continuous Batching)实战
数据结构·人工智能·分布式·python·深度学习·算法·vllm