嗨,我使用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
对我的代码有什么建议吗?谢谢
1条答案
按热度按时间eblbsuwk1#
放下枪
PARTITION
从窗口函数:演示
在本例中,您希望获取整个表的利润之和,因此在对的调用中不应有分区
SUM()
. 这是完全合法的OVER
没有输入,在这种情况下只意味着没有分区,默认情况下包含整个表。