需要计算百分比
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
我想得到每个人 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