首页 > 解决方案 > SQL表中的条件百分比列

问题描述

我想添加一个显示分数百分比值的列,其中每条记录的分数除以其所在类别的分数总和。因此,新列中的值应该是 0.6、0.4、0.3 和 0.7。

Id   Category   Score
1    foo        6        
2    foo        4          
3    bar        30
4    bar        70

我能想到的最好的办法是创建一个临时表,使用 GROUP BY 为 Score 创建总和值,然后将其加入主表。有没有更有效的方法来做到这一点?

标签: sql

解决方案


您也可以在不创建临时表的情况下执行此操作。

SELECT A.* , CAST(Score*1.0/TotalScore AS DECIMAL(6,2))
FROM [table1] A 
JOIN (
        SELECT      Category
                    ,SUM(Score) TotalScore 
        FROM        [table1] 
        GROUP BY    Category
      ) B
ON    A.Category = B.Category

推荐阅读