我有一张如下表格。我需要根据总列值计算每行的百分比值。如何使用SQL查询实现此目的?
我期待这样的结果:
请查看以下简单计算以获得结果。
(100 / 1000) * 100 = 10
表示第一个值。
(row value / grand total) * 100
你可以帮我用SQL查询得到10作为第一行值的结果吗?提前致谢。
答案 0 :(得分:6)
您可以在整个表格中使用SUM()
函数作为分析函数来计算总和。然后,只需将每个区域的成本除以该总和即可获得百分比。
SELECT
Region,
Cost,
100 * Cost / SUM(Cost) OVER () AS Percentage
FROM yourTable
请注意,您可以也使用非相关子查询来查找总费用,例如
(SELECT SUM(Cost) FROM yourTable)
但是我给你的第一个版本可能会胜过,除非它只需要运行一个查询。
<强>输出:强>
在这里演示:
<强>更新强>
对于您的更新查询,我可能会使用以下内容:
WITH cte AS (
SELECT
Region,
SUM(Cost) AS sum_cost
FROM yourTable
GROUP BY Region
)
SELECT
Region,
sum_cost,
100 * sum_cost / SUM(sum_cost) OVER () AS Percentage
FROM cte;
答案 1 :(得分:0)
您可以使用以下查询获得结果。
;with Sales(region,cost,Total)
as
(
select region,cost,
(sum(cost) over()) as Total
from YourTable
)
Select Region,Cost,convert(numeric(18,0),Cost/1000*100) as Per from sales