Uma*_*y S 1 sql sql-server sql-server-2008
我有一张如下表.我需要根据总列值计算每行的百分比值.如何使用SQL查询实现此目的?
我期待这样的结果:
请找到以下简单计算以获得结果.
(100 / 1000) * 100 = 10
Run Code Online (Sandbox Code Playgroud)
为第一个值.
(row value / grand total) * 100
Run Code Online (Sandbox Code Playgroud)
你可以帮我用SQL查询得到10作为第一行值的结果吗?提前致谢.
您可以SUM()
在整个表中使用该函数作为分析函数来计算总和.然后,只需将每个区域的成本除以该总和即可获得百分比.
SELECT
Region,
Cost,
100 * Cost / SUM(Cost) OVER () AS Percentage
FROM yourTable
Run Code Online (Sandbox Code Playgroud)
请注意,您也可以使用非相关子查询来查找总成本,例如
(SELECT SUM(Cost) FROM yourTable)
Run Code Online (Sandbox Code Playgroud)
但是,如果没有其他原因,我给你的第一个版本可能会超过它只需要运行一个查询.
输出:
在这里演示:
更新:
对于您更新的查询,我可能会使用以下内容:
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;
Run Code Online (Sandbox Code Playgroud)