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';
相关推荐
深蓝轨迹39 分钟前
Redis 消息队列
java·数据库·redis·缓存·面试·秒杀
曹牧1 小时前
Oracle:分批查询
数据库·oracle
祭曦念1 小时前
MySQL基础运维:mysqldump全量备份与恢复实操 | 新手可直接落地的备份指南
运维·数据库·mysql
于樱花森上飞舞1 小时前
【Redis】初识Redis
数据库·redis·缓存
羊小猪~~1 小时前
【QT】-- QMainWindow简介
开发语言·数据库·c++·后端·qt·前端框架·求职招聘
codkingo1 小时前
Skill:Agent 的可插拔能力单元
数据库·oracle
Boop_wu1 小时前
[MyBatis] MyBatis 快速入门(1)
数据库·oracle
l1t1 小时前
QWen 3.5plus总结的总结基准测试结果的正确方法
前端·数据库
额1291 小时前
CentOS 7 安装apache部署discuz导入数据库表
数据库·centos·apache
大阿明2 小时前
Spring.factories
java·数据库·spring