[UNIT] [PRICE] [QUANTITY] [REVENUE] [PERCENTAGE]
A $10 25 $250 25%
B $5 30 $150 15%
C $20 30 $600 60%
Total Revenue $1,000 100%
我正在尝试创建一个查询来计算[PERCENTAGE]列,这是我使用的:
UPDATE Table
SET [PERCENTAGE] = (PRICE*QUANTITY)/(sum(PRICE*QUANTITY)
以下是错误消息:
聚合可能不会出现在UPDATE语句的集合列表中。
有任何建议吗?
感谢您的阅读。
答案 0 :(得分:2)
UPDATE
t1 target
CROSS JOIN t1 src
SET
target.PERCENTAGE = target.PRICE * target.QUANTITY /
(SELECT SUM(src.PRICE * src.QUANTITY))
答案 1 :(得分:0)
我建议使用窗口函数和with
子句来执行此操作:
with toupdate as (
select t.*,
sum(price*quantity) over () as total
from t
)
update toupdate
set percentage = price*quantity / total;