如何从列中减去SQL中的累积量

时间:2013-11-07 09:21:12

标签: sql percentage

我有这些数据:

Contact  Customers
1        2 
2        3 
3        1 
4        6 

使用包含客户总数的变量。

此数据表示有2位客户曾与客户服务人员联系过,3位客户已与客户服务人员联系过两次等。

我希望有另一个专栏显示与客户服务联系x次或更多次的客户的累计百分比。所以在这个例子中:

Contact  Customers Cumm%
1        2         100
2        3         83.3
3        1         58.3
4        6         50%

我尝试了几件事,但我对SQL很新,我似乎无法找到任何示例,需要一些帮助。

如果您知道如何获得累积的客户量,那也很好,因为我知道如何获得百分比。我的意思是:

Contact  Customers CummCustomers
1        2         12
2        3         10
3        1         7
4        6         6

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用子查询来完成此操作:

SELECT
    Contact
,   Customers
,   (SELECT SUM(Customers) FROM myTable t2 WHERE t2.Contact >= t1.Contact) as CummCustomers
FROM myTable t1

Demo on sqlfiddle

答案 1 :(得分:1)

您可以使用更快的分析查询来解决您的问题。

select contact,customer,
sum(customer) over (order by contact desc) cumm_customer
from  table1 order by contact asc;

请参阅此处的sqlfiddle演示 http://sqlfiddle.com/#!4/74169/4