[英]Select row that has max total value SQL Server
我有以下方案(2个表):
客户(编号,名称)和销售(编号,客户编号,日期,总和)
如何选择以下数据?
1)一直以来都是最佳客户(“客户”的“总和”列中有“最大总价值”)
例如,我有2个表(分别为客户和销售):
id CustomerName
---|--------------
1 | First
2 | Second
3 | Third
id CustomerId datetime Sum
---|----------|------------|-----
1 | 1 | 04/06/2013 | 50
2 | 2 | 04/06/2013 | 60
3 | 3 | 04/07/2013 | 30
4 | 1 | 03/07/2013 | 50
5 | 1 | 03/08/2013 | 50
6 | 2 | 03/08/2013 | 30
7 | 3 | 24/09/2013 | 20
所需结果:
CustomerName TotalSum
------------|--------
First | 150
2)当年每月的最佳客户(与上一个相同,但当年每月的最佳客户)
谢谢。
尝试使用此方法,始终获得最佳客户
SELECT Top 1 WITH TIES c.CustomerName, SUM(s.SUM) AS TotalSum
FROM Customer c JOIN Sales s ON s.CustomerId = c.CustomerId
GROUP BY c.CustomerId, c.CustomerName
ORDER BY SUM(s.SUM) DESC
一种选择是将RANK()
与SUM
聚合结合使用。 这将为您提供整体价值。
select customername, sumtotal
from (
select c.customername,
sum(s.sum) sumtotal,
rank() over (order by sum(s.sum) desc) rnk
from customer c
join sales s on c.id = s.customerid
group by c.id, c.customername
) t
where rnk = 1
在这一点上,按月和年进行分组应该是微不足道的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.