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

如何用Presto窗口函数统计商品价格变更次数并降序排序?

Presto统计商品价格变更次数查询方案

要统计每个商品的价格变更次数,核心是对比同一商品按时间排序后的相邻价格是否不同,这里用LAG()窗口函数来实现,具体查询语句如下:

SELECT DISTINCT
    Item,
    SUM(change_flag) OVER (PARTITION BY Item) AS price_change_count
FROM (
    SELECT
        Item,
        Price,
        Date,
        CASE 
            WHEN LAG(Price) OVER (PARTITION BY Item ORDER BY Date) != Price THEN 1
            ELSE 0
        END AS change_flag
    FROM your_table_name
) t
ORDER BY price_change_count DESC;

语句说明:

  1. 内层子查询:

    • LAG(Price) OVER (PARTITION BY Item ORDER BY Date):按Item分组,每组内按Date升序排列,获取当前记录的上一条价格
    • 通过CASE语句判断当前价格与上一条价格是否不同,不同则标记为1(代表一次变更),相同则标记为0
  2. 外层查询:

    • SUM(change_flag) OVER (PARTITION BY Item):对每个商品的变更标记求和,得到总变更次数
    • DISTINCT用于去重,避免同一商品的多条记录重复输出结果
    • ORDER BY price_change_count DESC按变更次数降序排列

执行后就能得到预期结果:A→3,B→2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:17:02