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';
相关推荐
蓝眸少年CY5 分钟前
(第十五篇)spring cloud之Sentinel实现熔断与限流
数据库·spring cloud·sentinel
snow@li8 分钟前
数据库-Oracle:常用语法 / Oracle 核心知识技能梳理
数据库·redis·缓存
qq_3926906610 分钟前
如何处理MongoDB分片集群的连接池耗尽危机_客户端连接与mongos到shard的连接乘数效应
jvm·数据库·python
叶小鸡10 分钟前
Java 篇-项目实战-天机学堂(从0到1)-day8
数据库·oracle
qq_3721542310 分钟前
Python异步爬虫如何应对封IP_结合asyncio与代理池实现轮询请求
jvm·数据库·python
abc123456sdggfd12 分钟前
php怎么处理跨域请求_php如何设置header解决跨域问题详解
jvm·数据库·python
SQL必知必会14 分钟前
SQL 数据分析入门:如何把业务问题翻译成 SQL 查询
大数据·sql·数据分析
zhangchaoxies15 分钟前
如何在CSS中正确加载本地JPG背景图片
jvm·数据库·python
阿坤带你走近大数据16 分钟前
Oracle报错-锁问题
数据库·oracle
旺仔小拳头..20 分钟前
JDBC 基础: API、SQL 注入问题,事务、连接池
数据库·sql