我有一个 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 函数来了解每次提取的先前提取价格,然后进行比较。
由于我对这些功能不熟悉,所以无法找到正确的解决方案。有人可以帮我解决这里的预期查询吗?
您需要一个日期列来确保行的顺序不变:
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