获取与其他行中列值相关的列值

时间:2019-08-14 12:21:00

标签: sql postgresql group-by

我有一个当前的表格

current table

,并希望获得此所需的表:

desired table

如您所见,该所需表应具有第四列,该列指示我该行中的价格与同一产品行中其余值的比例值

例如,对于A类产品,我有三个产品(1、2和3),价格分别为20、20和30。

在这种情况下,对于产品1,我希望获得其重量为(产品价格/属于产品A的产品价格之和)。这怎么可能?

谢谢

1 个答案:

答案 0 :(得分:2)

我们可以在此处尝试使用SUM()作为分析函数:

SELECT
    PRODUCT,
    PRODUCT_TYPE,
    PRICE,
    1.0 * PRICE / SUM(PRICE) OVER (PARTITION BY PRODUCT_TYPE) AS WEIGHT
FROM yourTable;

这里的想法是上面的SUM()是一个窗口函数,用于计算每种产品类型的总价之和。然后将其用于标准化每个记录的每个价格。

enter image description here

Demo

相关问题