Sql 按区域显示排名靠前的结果
我有下表: 表顺序Sql 按区域显示排名靠前的结果,sql,sql-server,group-by,count,greatest-n-per-group,Sql,Sql Server,Group By,Count,Greatest N Per Group,我有下表: 表顺序 OrderID Region CustomerID SalesPersonID 1 North 01 001 2 North 12 002 3 North 33 002 4 North 55 002 5 Nor
OrderID Region CustomerID SalesPersonID
1 North 01 001
2 North 12 002
3 North 33 002
4 North 55 002
5 North 21 001
6 North 11 002
7 North 33 004
8 North 15 002
9 East 23 005
10 East 01 005
11 East 12 005
12 East 33 007
13 East 55 005
14 East 21 006
15 East 11 006
16 East 33 006
17 East 15 007
10 East 34 007
我希望显示每个地区订单最多的销售人员。所以我的最终结果应该是:
Region SalesPerson Orders
North 002 5
East 005 4
如何检索此信息?您可以使用窗口功能-如果您未告知的数据库支持这些功能:
select Region, SalesPersonID, Orders
from (
select
Region,
SalesPersonID,
count(*) orders,
rank() over(partition by Region order by count(*) desc) rn
from orders
group by Region, SalesPersonID
) t
where rn = 1
rank()。如果您只希望每个区域有一个结果,即使存在联系,也可以使用row\u number()
请按卖方和地区查询总数
根据之前的总数计算各地区的最大销售额,并根据该总数确定相关卖家
with Totales as
(
select Region,SalesPersonID,count(1) As Totales
from sales
group by Region,SalesPersonID
)
,MaxRegion as
(
select Region,max(Totales) As Totales
from totales
group by Region
)
select MaxRegion.Region,Totales.SalesPersonID,MaxRegion.Totales
from MaxRegion
inner join Totales on MaxRegion.Region=Totales.Region and MaxRegion.Totales=Totales.Totales
请记住,如果您有两个卖家的最大销售额相同,那么他们将被包括在查询中。如果您尝试了什么以及遇到了什么问题,那就太好了。