需要计算百分比

Need to calculate percentage

我想得到每个人 weight 占总数 weight 的百分比。

这是我的数据:

TableA

Name        |   Size    |   Weight  
------------------------------------  
Jamie       |   0.25    |   48  
Jamie       |   0.50    |   48  
Taylor      |   0.25    |   55  
Taylor      |   0.30    |   54  
Taylor      |   0.45    |   48  

这是我想要的输出:

Name    |   Size        |   Percentage  |   Weight  
---------------------------------------------------------------  
Jamie   |   0.25        |   50%     |   48  
Jamie   |   0.50        |   50%     |   48  
Taylor  |   0.25        |   35.03%      |   55  
Taylor  |   0.30        |   34.39%      |   54  
Taylor  |   0.45        |   30.57%      |   48  

例如,Jamie 的总体重是 96 (48+48),所以我必须计算他的体重值作为每行 96 的百分比。

将table加入到计算权重总和的查询中:

select t.name, size, 100.0 * weight / total, weight
from tableA t
join (select name, sum(weight) total
      from tableA
      group by name) s on s.name = t.name

此语法适用于所有关系数据库(据我所知)。

CTE用于目的

;WITH CTE 
AS
(
   SELECT *, 100 * Weight/SUM(Weight) OVER(Partition By Name) AS Per 
   FROM TableName
)
SELECT * FROM CTE