【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
相关推荐
ProcessOn16 小时前
纯干货!MySql实战02:一条SQL更新语句执行流程大探索!
sql·mysql·sql server
geovindu20 小时前
sql: JSON and XML Data Handling in SQL using mysql 9.0
数据库·sql·mysql·数据库开发
泡海椒21 小时前
JQuick-SQL SELECT 投影:字段、别名与表达式查询
数据库·sql
Nil20821 小时前
leetcode 49字母异位分组
算法·leetcode·哈希算法
猫咪很可爱21 小时前
mysqldump 失败常见场景
数据库·sql·mysql
其实防守也摸鱼1 天前
Linux文本处理命令理论学习
linux·服务器·前端·数据库·sql·学习·安全
IM架构师1 天前
# 一次老旧PHPCMS网站入侵排查:从SQL注入到PHP后门,以及IP白名单止血
sql·tcp/ip·php
泡海椒1 天前
JQuick-SQL 快速开始:注册内存表并执行查询
数据库·windows·sql
Nil2081 天前
leetcode 5最长回文子串
算法·leetcode·职场和发展
m0_674571971 天前
力扣 hot 100 python
python·算法·leetcode