【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
相关推荐
你才是臭弟弟14 小时前
时序数据库(TDengine TSDB)基本SQL使用
sql·时序数据库·tdengine
源代码•宸14 小时前
Leetcode—3. 无重复字符的最长子串【中等】
经验分享·后端·算法·leetcode·面试·golang·string
历程里程碑15 小时前
哈希2:字母异位符分组
算法·leetcode·职场和发展
Stardep16 小时前
算法入门20——二分查找算法——搜索插入位置
数据结构·算法·leetcode
Gauss松鼠会16 小时前
【openGauss】学习 gsql 命令行的使用
数据库·sql·database·opengauss
老鼠只爱大米16 小时前
LeetCode经典算法面试题 #141:环形链表(快慢指针、标记节点等多种方法详细解析)
算法·leetcode·链表·快慢指针·floyd算法·环形链表
踩坑记录16 小时前
leetcode hot100 48.旋转图像 矩阵转置
leetcode
鹿角片ljp17 小时前
力扣112. 路径总和:递归DFS vs 迭代BFS
leetcode·深度优先·宽度优先
im_AMBER17 小时前
Leetcode 104 两两交换链表中的节点
笔记·学习·算法·leetcode
程序员-King.17 小时前
day159—动态规划—打家劫舍(LeetCode-198)
c++·算法·leetcode·深度优先·回溯·递归