34 - 指定日期的产品价格(高频 SQL 50 题基础版)

34 - 指定日期的产品价格


sql 复制代码
-- row_number(行号) 生成连续的序号,不考虑分数相同
-- 在'2019-08-16'之前改的价格,使用最近一期的日期,没有在'2019-08-16'之前改的价格,默认价格为10
select 
    t.product_id, 
    t.new_price as price
from 
    (
        select 
            *,
            row_number() over (PARTITION BY product_id order by change_date desc) as row_num
        from 
            Products
        where 
            change_date<='2019-08-16') 
    as t
where 
    t.row_num=1
union
-- 没有在'2019-08-16'之前改的价格,默认价格为10
select 
    product_id, 10 as price 
from 
    Products 
group by 
    product_id
having 
    min(change_date)>'2019-08-16';
相关推荐
kyle~1 分钟前
计算机网络---CA证书体系(Certificate Authority)
前端·数据库·计算机网络
文人sec12 分钟前
性能测试-jmeter9-直连数据库
数据库·测试工具·jmeter
叫我阿柒啊32 分钟前
Java全栈工程师的面试实战:从基础到复杂问题的完整解析
java·数据库·spring boot·微服务·vue3·测试·全栈开发
DemonAvenger2 小时前
从 MySQL 5.x 到 MySQL 8:新特性解析与升级实战指南
数据库·mysql·性能优化
m0_709788622 小时前
单片机点灯
java·前端·数据库
JosieBook3 小时前
【数据库】SQL查询中的ASC和DESC到底是什么意思?一文彻底搞懂排序规则
数据库·sql·oracle
我有一颗五叶草3 小时前
InnoDB存储引擎-事务
数据库·mysql·innodb
bhots￿3 小时前
oracle 从一张表更新到另外一张表的方法(MERGE)
数据库·oracle
IDOlaoluo3 小时前
Oracle 10g 安装教程(详解,从exe安装到数据库配置,附安装包)
数据库·oracle
百锦再3 小时前
Python:AI开发第一语言的全面剖析
java·开发语言·人工智能·python·sql·ai·radis