【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
相关推荐
1白天的黑夜140 分钟前
优先级队列(堆)-1046.最后一块砖的重量-力扣(LeetCode)
c++·leetcode·优先级队列
仰泳的熊猫1 小时前
LeetCode:496. 下一个更大元素 I
数据结构·c++·算法·leetcode
未知陨落2 小时前
LeetCode:78.跳跃游戏
算法·leetcode
Wenhao.2 小时前
LeetCode-Hot100 最小栈实现
算法·leetcode
叫我詹躲躲2 小时前
🚀 震撼!10道DFS&BFS神级题目让你的算法能力飙升300%
前端·leetcode
Jiezcode3 小时前
LeetCode 48. 旋转图像
c++·算法·leetcode·职场和发展
Greedy Alg3 小时前
LeetCode 230. 二叉搜索树中第 K 小的元素
算法·leetcode·职场和发展
rannn_1113 小时前
【LeetCode hot100|Week4】链表
后端·算法·leetcode·链表
种自己的花呀3 小时前
LeetCode 53 最大子数字和(动态规划)
算法·leetcode·动态规划
Craaaayon3 小时前
【数据结构】二叉树-图解深度优先搜索(递归法、迭代法)
java·数据结构·后端·算法·leetcode·深度优先