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

编写SQL语句识别按商品(UID)分组的价格变更记录行

识别价格变化的商品记录SQL方案

针对你手头的水果商品数据表需求——找出存在价格变化的记录并按UID分组,这里提供几个实用的SQL实现方法:

方法1:先筛选有价格变化的商品,再列出所有相关记录

这个方法先定位所有出现过价格变动的UID,再关联原表获取这些商品的全量记录,方便查看完整的价格时间线:

WITH price_variations AS (
    SELECT 
        UID,
        COUNT(DISTINCT Price) AS distinct_price_count
    FROM your_table_name  -- 替换成你的实际表名
    GROUP BY UID
    HAVING COUNT(DISTINCT Price) > 1  -- 筛选价格数大于1的商品(即有变化)
)
SELECT 
    t.Table_ID,
    t.Date,
    t.UID,
    t.Fruit,
    t.Variety,
    t.Price
FROM your_table_name t
INNER JOIN price_variations pv 
    ON t.UID = pv.UID
ORDER BY t.UID, t.Date;  -- 按商品和日期排序,清晰展示价格变化顺序

方法2:给每条记录标记价格变化状态

用窗口函数直接在每条记录上标注该商品是否有价格变化,以及当前价格是否为调整后的价格:

SELECT 
    Table_ID,
    Date,
    UID,
    Fruit,
    Variety,
    Price,
    -- 标记该商品是否存在价格变动
    CASE 
        WHEN COUNT(DISTINCT Price) OVER (PARTITION BY UID) > 1 
        THEN '存在价格变化' 
        ELSE '无价格变化' 
    END AS price_change_status,
    -- 标记当前价格是否与该商品首次录入价格不同
    CASE 
        WHEN Price <> FIRST_VALUE(Price) OVER (PARTITION BY UID ORDER BY Date) 
        THEN '调整后价格' 
        ELSE '原始价格' 
    END AS price_type
FROM your_table_name
ORDER BY UID, Date;

方法3:直接显示价格发生变化的具体记录

如果只需要看到价格变动的那几行(比如从原始价调到新价格的记录),可以用LAG函数获取上一次的价格,筛选出价格不同的行:

WITH ranked_price_records AS (
    SELECT 
        *,
        -- 获取同一UID下上一条记录的价格(按日期排序)
        LAG(Price) OVER (PARTITION BY UID ORDER BY Date) AS previous_price
    FROM your_table_name
)
SELECT 
    Table_ID,
    Date,
    UID,
    Fruit,
    Variety,
    Price AS current_price,
    previous_price,
    Price - previous_price AS price_difference  -- 计算价格变动幅度
FROM ranked_price_records
WHERE 
    previous_price IS NOT NULL  -- 排除第一条无历史价格的记录
    AND Price <> previous_price  -- 只保留价格变化的行
ORDER BY UID, Date;

注意事项

  • 替换代码中的your_table_name为你实际使用的表名
  • 如果日期字段的格式需要转换,可能需要用CAST(Date AS DATE)确保排序正确
  • 若存在同一UID同一天多次调价的情况,上述方法依然有效,因为是按UID分组并按日期排序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:20:26