You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Products表筛选日价格涨幅超10%的产品数据

问题描述

我有一张每日更新产品价格的Products表,表结构及数据如下:

eff_dateproduct_idprice
2022-11-25P1150
2022-11-25P275.8
2022-11-25P32.9
2022-11-26P1180.5
2022-11-26P277
2022-11-26P413.92

部分产品并非每日都有数据(比如P3没有26日的数据,P4没有25日的数据)。假设今日是2022-11-26,需要对比产品今日与昨日的价格,筛选出价格涨幅≥10%的产品,输出格式如下:

eff_dateproduct_idtodays_priceyesterdays_price
2022-11-26P1180.5150
解决方案

可以通过自连接关联今日和昨日的产品价格数据,计算涨幅后筛选符合条件的记录,SQL语句如下:

SELECT 
    t.eff_date,
    t.product_id,
    t.price AS todays_price,
    y.price AS yesterdays_price
FROM 
    Products t
INNER JOIN 
    Products y 
    ON t.product_id = y.product_id
    AND t.eff_date = '2022-11-26'
    AND y.eff_date = DATE_SUB(t.eff_date, INTERVAL 1 DAY)
WHERE 
    (t.price - y.price) / y.price >= 0.1;

说明

  • 用INNER JOIN确保只获取两天都有价格记录的产品,避免因某一天无数据导致的无效计算
  • 通过DATE_SUB自动计算昨日日期,比直接写死日期更灵活(如果需要适配任意日期,可替换'2022-11-26'为当前日期函数,比如CURDATE())
  • 涨幅计算公式为(今日价格 - 昨日价格)/昨日价格,筛选结果≥10%(即0.1)的记录

内容的提问来源于stack exchange,提问作者Johny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:21:11