【问题标题】:SQL - Cumulative Sales Percentage [duplicate]SQL - 累计销售百分比 [重复]
【发布时间】:2018-09-24 08:51:39
【问题描述】:

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

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

【问题讨论】:

  • 社区机器人怎么知道这是重复的?

标签: sql sum ssms


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果销售额是十进制或整数,那么您可以这样计算。在添加 $ 和 % 符号之前,我将销售额和 cum percent 转换为字符串。

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多