0

您好,有一个产品数据库,其价格每个月(期间)都在变化 - 我想以百分比显示价格变化,按类别分组。架构是这样的:id、name、category、price、period。(期间为 YYYY-MM)

行可能是:

123, "Chair" , "Furniture", 123 , 2013-05  -- for may
123, "Chair" , "Furniture", 110 , 2013-06  -- for june

是否可以在 SQL 查询中计算每个月每种产品的百分比差异?同时将类别组合在一起?

4

1 回答 1

0

这种查询的挑战是找到上一个时期。这是一种方法:

select p.*,
       (p.price - 
        (select p2.price
         from product p2
         where p2.id = p.id and p2.period < p.period
         order by period desc
         limit 1
        ) - 1
       ) * 100 as PercentageChange
from product p
order by category;

它使用相关子查询,并假设每个月都有一个价格。通过“将类别组合在一起”,我假设您的意思是按类别排序。(按类别汇总会丢失每个产品的信息。)

请注意,上述语法可能因数据库而异。不同的数据库有不同的方式将结果限制为一行。

于 2013-09-01T18:51:22.193 回答