Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-累计销售百分比_Sql_Sum_Ssms - Fatal编程技术网

SQL-累计销售百分比

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% 有什

我有一个包含两列的表-您可以调用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%


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

如果销售额是十进制或整数,那么可以用这种方法计算。在添加$和%符号之前,我将销售额和累计百分比转换为字符串

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之间的数字。

社区机器人如何知道这是重复的?社区机器人如何知道这是重复的?