我如何计算百分比列

How can I calculate percentage column

抱歉,我不得不调整我的问题。

使用 SQL Server 2016,我将查询的汇总结果放入新的 table,如下所示:

Product Total Sales Percentage
Product A 596.42 0.00
Product A 127.55 0.00
Product A 736.83 0.00
Product B 379.51 0.00
Product B 205.95 0.00
Product C 905.99 0.00

我添加了 Percentage 列,因此我可以使用基于每个产品的总销售额的百分比更新该列。

例如,我试图从上述 table 中获得以下百分比结果。

Product Total Sales Percentage
Product A 596.42 40.83
Product A 127.55 8.73
Product A 736.83 50.44
Product B 379.51 64.82
Product B 205.95 35.18
Product C 905.99 100.00

如何使用 UPDATE 语句实现此目的?

这可能取决于您的 DBMS,如果支持,您可以使用 OVER() 汇总所有行

SELECT 
  TOTAL_SALES / SUM(TOTAL_SALES) OVER() AS PERCENT_OF_SALES
FROM TABLE

如果不受支持,您可以使用子查询

SELECT 
  TOTAL_SALES / (SELECT SUM(TOTAL_SALES) FROM TABLE) AS PERCENT_OF_SALES
FROM TABLE

对于取决于您的 DBMS 的更新语句,您可以执行类似

的操作
DECLARE @d INT = (SELECT SUM(TOTAL_SALES) FROM TABLE)

UPDATE TABLE
SET PERCENT_OF_SALES = SALES / @d

您可以像这样更新 Percentage 列:

update tbl
set Percentage = ([Total Sales]/(select sum([Total Sales]) from tbl)) * 100

Fiddle example

与Mysql :

SELECT SUM(total) FROM test INTO @tot;
UPDATE test SET percent = 100 * total / @tot ;

DBFiddle 示例:https://www.db-fiddle.com/f/hERoW3LajH9tMhjQJUKHER/1