如何在子查询中插入MAX函数? (SQL Server)

问题描述 投票:1回答:1

我有以下SQL代码,它显示了每个扇区每个卖家的销售数量。

SELECT        
    [JO_Info].Name, [Proc].Sector, COUNT([JO].JO_ID) AS total
FROM            
    [JA] 
INNER JOIN
    [Proc] ON [JA].ProcessID = [Proc].ProcessID 
INNER JOIN
    [JO] ON [JA].JO_ID = [JO].JO_ID 
INNER JOIN
    [JO_Info] ON [JO].JOI_ID = [JO_Info].JOI_ID
WHERE        
    ([JO].JO_ID = 'seller')
GROUP BY 
    [JO_Info].Name, [Proc].Sector

输出如下:

    Name      | Sector  | total
   -----------+---------+----------
    Grace     |  1      |  4
    Elizabeth |  2      |  1
    Bette     |  3      |  3
    Angelina  |  4      |  6
    Karl      |  4      |  1
    Alberto   |  13     |  1
    Jorge     |  15     |  1

但我希望每个部门销售更多的卖家。所以,我的问题是如何插入MAX函数以获得以下结果(扇区中没有重复)。

    Name      | Sector  | total
   -----------+---------+----------
    Grace     |  1      |  4
    Elizabeth |  2      |  1
    Bette     |  3      |  3
    Angelina  |  4      |  6
    Alberto   |  13     |  1
    Jorge     |  15     |  1
sql sql-server
1个回答
2
投票

你可以使用row_number()

with t as (<your query here>)
select t.*
from (select t.*, row_number() over (partition by sector order by total desc) as seqnum
      from t
     ) t
where seqnum = 1;
© www.soinside.com 2019 - 2024. All rights reserved.