我希望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.
答案 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