SQL - 累计销售百分比

Zak*_*her 1 sql ssms sum

我有一个包含两列的表 - 您可以调用下面的表 SalesSummary,例如:

Rank, Sales Dollars
1, $700
2, $200
3, $100
Run Code Online (Sandbox Code Playgroud)

我想编写一个查询来添加新列 - 累计销售百分比:

Rank, Sales Dollars, Cumulative Sales Percentage
1, $700, 70%
2, $200, 90%
3, $100, 100%
Run Code Online (Sandbox Code Playgroud)

关键部分是累积的,例如排名 2 的条目应该是 90%,因为它将 700 美元 + 200 美元加在一起,加上 1000 美元的总额,得到 90%。

有什么建议吗?非常感谢您的帮助!

Gor*_*off 8

使用窗口函数。以下是计算累计金额和比率的方法:

select t.*,
       sum(t.sales) over (order by rank) / sum(t.sales) over ()
from t
order by rank;
Run Code Online (Sandbox Code Playgroud)

注意:如果t.sales是整数,则除法将为 0。您可以乘以 1.0 得到 0 到 1 之间的数字,或者乘以 100.0 得到 0 到 100 之间的数字。