SQL-累计销售百分比
我有一个包含两列的表-您可以调用SalesSummary下面的表,例如:SQL-累计销售百分比,sql,sum,ssms,Sql,Sum,Ssms,我有一个包含两列的表-您可以调用SalesSummary下面的表,例如: Rank, Sales Dollars 1, $700 2, $200 3, $100 我想写一个查询来添加一个新列-累计销售百分比: Rank, Sales Dollars, Cumulative Sales Percentage 1, $700, 70% 2, $200, 90% 3, $100, 100% 关键部分是累积的,例如排名2的条目应该是90%,因为它将$700+200加在$1000总数上得到90% 有什
Rank, Sales Dollars
1, $700
2, $200
3, $100
我想写一个查询来添加一个新列-累计销售百分比:
Rank, Sales Dollars, Cumulative Sales Percentage
1, $700, 70%
2, $200, 90%
3, $100, 100%
关键部分是累积的,例如排名2的条目应该是90%,因为它将$700+200加在$1000总数上得到90%
有什么建议吗?非常感谢您的帮助 如果销售额是十进制或整数,那么可以用这种方法计算。在添加$和%符号之前,我将销售额和累计百分比转换为字符串
SELECT t1.rank,
'$' + convert(varchar(20), t1.sales) as "Sales Dollars",
convert(varchar(4), sum(t2.sales)*100/(select
sum(sales) from tbl)) + '%' as "Cumulative Sales Percentage"
FROM tbl t1
INNER JOIN tbl t2
ON t1.rank >= t2.rank
GROUP BY t1.rank, t1.sales
ORDER BY t1.rank;
如果销售额是十进制或整数,那么可以用这种方法计算。在添加$和%符号之前,我将销售额和累计百分比转换为字符串
SELECT t1.rank,
'$' + convert(varchar(20), t1.sales) as "Sales Dollars",
convert(varchar(4), sum(t2.sales)*100/(select
sum(sales) from tbl)) + '%' as "Cumulative Sales Percentage"
FROM tbl t1
INNER JOIN tbl t2
ON t1.rank >= t2.rank
GROUP BY t1.rank, t1.sales
ORDER BY t1.rank;
使用窗口功能。以下是计算累计金额和比率的方法:
select t.*,
sum(t.sales) over (order by rank) / sum(t.sales) over ()
from t
order by rank;
注意:如果
t.sales
为整数,则除法为0。您可以乘以1.0得到一个介于0和1之间的数字,或者乘以100.0得到一个介于0和100之间的数字。使用窗口函数。以下是计算累计金额和比率的方法:
select t.*,
sum(t.sales) over (order by rank) / sum(t.sales) over ()
from t
order by rank;
注意:如果
t.sales
为整数,则除法为0。您可以乘以1.0得到一个介于0和1之间的数字,或者乘以100.0得到一个介于0和100之间的数字。社区机器人如何知道这是重复的?社区机器人如何知道这是重复的?