mysql窗口函数计算百分比

c86crjj0  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(407)

嗨,我使用mysql窗口函数来计算每个产品的利润占总利润的百分比。然而,它并没有像我预期的那样工作。
数据:表a

total   Profit      productCode productName
5554.56 S10_1949    1952        Alpine Renault 1300
5473.71 S12_4675    1969        Dodge Charger
5078.35 S12_1108    2001        Ferrari Enzo
4475    S12_1099    1968        Ford Mustang

我的代码

select A.totalProfit, 
A.totalProfit/sum(A.totalProfit) over (PARTITION BY A.totalProfit) as profitPercent, 
A.productCode, A.productName
from A;

我得到的产量,利润率计算不正确

totalProfit profitPercent   productCode productName
5554.56     1               S10_1949    1952 Alpine Renault 1300
5473.71     1               S12_4675    1969 Dodge Charger
5078.35     1               S12_1108    2001 Ferrari Enzo
4475        1               S12_1099    1968 Ford Mustang

预期产量

totalProfit profitPercent   productCode productName
5554.56     0.26987963      S10_1949    1952 Alpine Renault 1300
5473.71     0.265951368     S12_4675    1969 Dodge Charger
5078.35     0.246741996     S12_1108    2001 Ferrari Enzo
4475        0.217427005     S12_1099    1968 Ford Mustang

对我的代码有什么建议吗?谢谢

eblbsuwk

eblbsuwk1#

放下枪 PARTITION 从窗口函数:

SELECT
    A.totalProfit, 
    A.totalProfit / SUM(A.totalProfit) OVER () AS profitPercent,
    A.productCode,
    A.productName
FROM A;

演示

在本例中,您希望获取整个表的利润之和,因此在对的调用中不应有分区 SUM() . 这是完全合法的 OVER 没有输入,在这种情况下只意味着没有分区,默认情况下包含整个表。

相关问题