大小相同但重量不同时的百分比计算

时间:2016-06-11 00:55:48

标签: sql sql-server

我希望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  
Taylor      |   0.45    |   60  

这是我想要的输出:

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        |   49.76%      |   108  

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

对于泰勒来说,大小是0.45两次,但重量不同,所以在输出中它应该加权(48 + 60)然后(108/217)* 100 = 49.76百分比

1 个答案:

答案 0 :(得分:1)

我建议您首先要总结源记录,然后计算百分比。因此,使用派生表我建议您按名称/大小对权重求和,并在外部查询中完成。

SELECT
      name
    , size
    , 100 * Weight / SUM(Weight) OVER (PARTITION BY Name) AS Per
FROM (
      SELECT
            Name
          , Size
          , SUM(weight) AS weight
      FROM worker
      GROUP BY
            name
          , size
) AS w