【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 天前
LeetCode热题100-有效的括号
linux·算法·leetcode
数据库小组1 天前
MySQL 删库后怎么恢复?binlog2sql 之外,NineData 还能做什么
数据库·sql·mysql·安全·数据·ninedata·删库
competes1 天前
慈善基金投资底层逻辑应用 顶层代码低代码配置平台开发结构方式数据存储模块
java·开发语言·数据库·windows·sql
0xDevNull1 天前
MySQL 别名(Alias)指南:从入门到避坑
java·数据库·sql
@BangBang2 天前
leetcode (4): 连通域/岛屿问题
算法·leetcode·深度优先
Mr_pyx2 天前
【LeetCode Hot 100】 除自身以外数组的乘积(238题)多解法详解
算法·leetcode·职场和发展
故事和你912 天前
洛谷-数据结构-1-3-集合3
数据结构·c++·算法·leetcode·贪心算法·动态规划·图论
ulias2122 天前
leetcode热题 - 3
c++·算法·leetcode·职场和发展
正在走向自律2 天前
KingbaseES 基础 SQL 语法与日常运维实操手册
运维·数据库·sql·kingbasees
菜鸟丁小真2 天前
LeetCode hot100-287.寻找重复数和994.腐烂的橘子
数据结构·算法·leetcode·知识点总结