Sql 如何获取计数最大值的详细信息?
我有一张桌子:Sql 如何获取计数最大值的详细信息?,sql,sql-server,count,max,Sql,Sql Server,Count,Max,我有一张桌子: |eid |ManagerID|Phone#|(other details..| |------|---------|------|----------------| |1001 |1004 |12345 |......... | |1002 |1004 |1233 |......... | |1003 |1006 |133 |......... | |1004 | |444 |..
|eid |ManagerID|Phone#|(other details..|
|------|---------|------|----------------|
|1001 |1004 |12345 |......... |
|1002 |1004 |1233 |......... |
|1003 |1006 |133 |......... |
|1004 | |444 |......... |
|1005 |1004 |555 |......... |
|1006 | |666 |......... |
等等
我试图为管理最多员工的经理显示所有字段
我有
SELECT *
FROM EMPLOYEE
GROUP BY Manager
HAVING COUNT (Manager)=(
SELECT MAX(theCount) AS theCount
FROM (
SELECT Manager, COUNT(Manager) theCount
FROM EMPLOYEE
GROUP BY Manager));
但不断出现错误:
Incorrect syntax near ')'.
我不知道为什么
我知道这一部分的作用是提供一个包含管理者计数的表:
SELECT Manager, COUNT(Manager)
AS theCount
FROM EMPLOYEE
GROUP BY Manager
你可以试试下面的方法-
select * from
(
select managerid,count(*) as cnt,row_number() over(order by count(*) desc)
as rn
from
employee where managerid is not null
group by managerid
)A where rn=1
输出:
managerid cnt rn
1004 3 1
什么是您的dbms?使用Microsoft SSMSIs这是一个递归表(我的意思是,
ManagerID
是eid
的外键吗)?如果是,您支持多少层递归?请将您的问题包括在内并显示预期结果,以及您正在使用的SQL Server版本的标记。您使用的是基于不符合问题文本的分组的count(*)
。。。
WITH managers AS (
SELECT
ManagerID,
count(eid) as directs_count
FROM employee
GROUP BY ManagerID
)
SELECT *
FROM employee
WHERE
eid in (SELECT TOP 1 ManagerID FROM managers ORDER BY directs_count DESC)