对具有不同重复项的有序行进行求和

问题描述 投票:0回答:1

这是我拥有的数据:

客户 销售
A 3
B 10
C 4
D 2
E 4

这就是我想要得到的地方:

#顶级客户 总销售额
1 10
2 14
3 18
4 21
5 23

我正在尝试使用

ROW_NUMBER
OVER
(窗口函数?)来做到这一点:

SELECT 
  ROW_NUMBER() OVER (ORDER BY Sales DESC) AS '# TOP CUSTOMERS',
  SUM(Sales) OVER (ORDER BY Sales DESC) AS 'SUM SALES'
FROM Sales;

但是我得到了这个结果

#顶级客户 总销售额
1 10
2 18
3 18
4 21
5 23

我需要使用

DENSE_RANK
PARTITION BY
吗?对于它的价值,我什至不尝试排名或分区,我只是尝试对行进行排序,因此尝试看看是否有一个简单的解决方案。

sql presto
1个回答
0
投票

您还应该包括客户以使该行唯一。看图

SELECT 
  ROW_NUMBER() OVER (ORDER BY Sales DESC) AS '# TOP CUSTOMERS',
  SUM(Sales) OVER (ORDER BY  Sales DESC, Customer ASC ) AS 'SUM SALES'
FROM Sales;

点我查看结果

© www.soinside.com 2019 - 2024. All rights reserved.