繁体   English   中英

选择具有最大总值的SQL Server行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM