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';
相关推荐
随风,奔跑3 分钟前
Redis
数据库·redis·缓存
IvorySQL5 分钟前
2MB 的 PostgreSQL work_mem,如何吃掉 2TB 内存?
数据库·postgresql·开源
桑榆肖物6 分钟前
有字幕,没配音?用浏览器自带语音能力,让网页视频直接“开口说话”
数据库·edge·音视频·tts
熬夜的咕噜猫43 分钟前
MySQL主从复制与读写分离
网络·数据库·mysql
道清茗44 分钟前
【MySQL知识点问答题】 备份技术、Invisible Indexes 和直方图的应用
数据库·mysql
芒果披萨44 分钟前
sql存储过程
java·开发语言·数据库
jnrjian1 小时前
RAC 去除node的建议 dbca 和手动方法
数据库·oracle
TlYf NTLE1 小时前
redis分页查询
数据库·redis·缓存
翻斗包菜1 小时前
MySQL 全量、增量备份与恢复实战指南(含 mysqldump + binlog + XtraBackup)
数据库·oracle
|华|1 小时前
MySQL主从复制与读写分离
数据库·mysql