查找价格变化次数最多的商品

问题描述 投票:0回答:1

我有一个 Presto 表,如下所示:

项目 价格 日期
A 25.96 20/11/2022
B 11.89 2022年11月21日
B 11.89 2022年11月22日
A 26.67 2022年11月23日
A 26.45 2022年11月24日
B 11.75 2022 年 11 月 25 日
A 26.45 2022年11月26日

该表有 3 个字段。一个代表商品字段,另一个代表价格字段,最后一个是获取价格的日期。

我想知道某件商品的价格变化了多少次,并按降序排列。

在上面的例子中,我想要得到的结果是:

A -> 3

B -> 2

从我浏览过的文档来看,我似乎需要利用 Window 函数来了解每次提取的先前提取价格,然后进行比较。

由于我对这些功能不熟悉,所以无法找到正确的解决方案。有人可以帮我解决这里的预期查询吗?

sql window-functions presto
1个回答
0
投票

您需要一个日期列来确保行的顺序不变:

with cte as (
select 
  item
 , case when Price = lag(Price,1,price) over (partition by item order by date) then 0 else 1 end as price_Change
from tablename 
) 

select item , sum(price_change) as price_change
from cte 
group by item 
© www.soinside.com 2019 - 2024. All rights reserved.