首页 > 解决方案 > 使用 SQL 计算基于类别的价格变化百分比

问题描述

我正在用 SQL 编写一个查询,但还没有弄清楚......

我的表如下所示:

Category Price Date
Cat1       20   2019-04
Cat2       12   2019-04
Cat3        5   2019-04
Cat1       23   2020-04
Cat2       17   2020-04
Cat3        8   2020-04

我想得到一个显示这个的表格:

Cat  Pct_change Period
Cat 1   0.15     2019-2020
Cat 2   0.41       "

等等。

我可以按类别获取此类别,但我有 100 个类别,无法手动执行此操作。如果能同时看到这两种价格,那就太好了。我不(不能)允许的是生成新表只是保存数据以加入单独的表......

谢谢!!

标签: sqlsqliteprice

解决方案


您可以使用first_value()

select distinct category, min(date), max(date),
       (-1 + first_value(price) over (partition by category order by date desc) /
         first_value(price) over (partition by category order by date asc)
       ) as percent_change
from t;

推荐阅读