【Leetcode】高频SQL基础题--1164.指定日期的产品价格

【Leetcode】高频SQL基础题--1164.指定日期的产品价格

复制代码
要求:一开始,所有产品价格都为 10。编写一个解决方案,找出在 2019-08-16 所有产品的价格。
以 任意顺序 返回结果表。

解题思路:

找到 2019-08-16 前所有有改动的产品及其最新价格,如果没有更新那就是原始价格。

1、子查询:先找到所有的产品;

2、子查询:再找到所有 2019-08-16 前有修改的产品和他们最新的价格;

3、使用 左连接left join 将两个查询联合。使用ifnull(p2.new_price, 10)如果产品没有价格,说明没有修改过,设置为 10,如果有价格,设置为最新的价格。

代码:

sql 复制代码
select 
    p1.product_id, 
    ifnull(p2.new_price, 10) as price
from (
    select distinct product_id
    from products
) as p1
left join (
    select 
    	product_id, 
    	new_price 
    from products
    where (product_id, change_date) in (
        select 
        	product_id, 
        	max(change_date)
        from products
        where change_date <= '2019-08-16'
        group by product_id
    )
) as p2 
on p1.product_id = p2.product_id
相关推荐
路边草随风2 分钟前
starrocks compaction 进度问题定位
大数据·sql
曹牧11 分钟前
Oracle:“列不能外部关联到子查询”
数据库·sql
小白程序员成长日记35 分钟前
2025.12.01 力扣每日一题
算法·leetcode·职场和发展
w***i2941 小时前
【SQL】count(1)、count() 与 count(列名) 的区别
数据库·sql
where happens1 小时前
SQL Server 收缩日志
数据库·sql·oracle
W***83202 小时前
SQL 中UPDATE 和 DELETE 语句的深入理解与应用
数据库·sql
凌~风2 小时前
001-计算机实验报告之数据库原理实验报告
数据库·sql
.柒宇.2 小时前
力扣hot100---42.接雨水(java版)
java·算法·leetcode
f***01933 小时前
clickhouse-介绍、安装、数据类型、sql
数据库·sql·clickhouse
大飞记Python3 小时前
【2025全攻略】PyCharm专业版 / 社区版如何打开.db 数据库文件
数据库·python·sql·pycharm