您可以使用TOP WITH TIES 和RANK():
SELECT TOP (1) WITH TIES [JOB ROLE], [CITY], COUNT(DISTINCT [EMPLOYEE_ID]) as [COUNT]
FROM MyTable
GROUP BY [JOB ROLE], [CITY]
ORDER BY RANK() OVER (ORDER BY COUNT(DISTINCT [EMPLOYEE_ID]) DESC;
或者,使用子查询和RANK():
SELECT [JOB ROLE], [CITY], [COUNT]
FROM (SELECT [JOB ROLE], [CITY],
COUNT(DISTINCT [EMPLOYEE_ID]) as [COUNT],
RANK() OVER (ORDER BY COUNT(DISTINCT [EMPLOYEE_ID]) DESC) as seqnum
FROM MyTable
GROUP BY [JOB ROLE], [CITY]
) jc
WHERE seqnum = 1;
编辑:
这个问题似乎变成了每个城市最常见的工作角色。上面的查询很容易修改:
SELECT TOP (1) WITH TIES [JOB ROLE], [CITY], COUNT(DISTINCT [EMPLOYEE_ID]) as [COUNT]
FROM MyTable
GROUP BY [JOB ROLE], [CITY]
ORDER BY RANK() OVER (PARTITION BY [JOB ROLE] ORDER BY COUNT(DISTINCT [EMPLOYEE_ID]) DESC;
或者,使用子查询和RANK():
SELECT [JOB ROLE], [CITY], [COUNT]
FROM (SELECT [JOB ROLE], [CITY],
COUNT(DISTINCT [EMPLOYEE_ID]) as [COUNT],
RANK() OVER (PARTITION BY [JOB ROLE], ORDER BY COUNT(DISTINCT [EMPLOYEE_ID]) DESC) as seqnum
FROM MyTable
GROUP BY [JOB ROLE], [CITY]
) jc
WHERE seqnum = 1;