需要计算百分比

时间:2016-06-10 07:49:46

标签: sql sql-server sum 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  

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

2 个答案:

答案 0 :(得分:4)

将表格加入计算权重总和的查询:

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

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

答案 1 :(得分:1)

出于目的使用CTE

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