我有下表:
餐桌订单
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
如何检索此信息?
答案 0 :(得分:1)
您可以使用窗口函数-如果您未告知的数据库支持它们:
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_number()
。
答案 1 :(得分:0)
按卖方和地区查询总计。
使用先前的总计来计算区域销售量的最大值,并使用该总计来确定相关的卖家
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
请记住,如果您有两个卖方的最大销售数量相同,则它们将包含在查询中。