我有以下方案(2个表格):
客户(身份证,姓名)和 销售(Id,CustomerId,日期,总和)
如何选择以下数据?
1)有史以来最好的客户(客户,在总和列中有最大总价值)
例如,我有2个表(分别为Customers和Sales):
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)本年度每个月的最佳客户(与之前相同,但本年度每个月)
感谢。
答案 0 :(得分:4)
尝试为有史以来最好的客户
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
答案 1 :(得分:1)
一种选择是将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
按月和年份对此进行分组应该是微不足道的。