Sql 选择有关列中最常见事件的所有信息

Sql 选择有关列中最常见事件的所有信息,sql,sql-server,Sql,Sql Server,我需要选择管理最多其他员工的员工的所有信息 我的桌子在这里: 开斋节 fName 名字 工作 经理 雇佣 101 亚当 史密斯 经理 102 1998-04-12 102 伊丽莎 兰德 经理 101 1999-03-07 103 伊姆兰 可汗 销售额 102 2003-04-17 您需要在查询中使用ORDER BY子句,才能找到员工最多的经理。 将其用作WHERE子句中的子查询: SELECT * FROM Employee WHERE eID = ( SELECT TOP 1 Manage

我需要选择管理最多其他员工的员工的所有信息

我的桌子在这里:

开斋节 fName 名字 工作 经理 雇佣 101 亚当 史密斯 经理 102 1998-04-12 102 伊丽莎 兰德 经理 101 1999-03-07 103 伊姆兰 可汗 销售额 102 2003-04-17
您需要在查询中使用
ORDER BY
子句,才能找到员工最多的经理。
将其用作
WHERE
子句中的子查询:

SELECT *
FROM Employee
WHERE eID = (
  SELECT TOP 1 Manager
  FROM Employee
  GROUP BY Manager
  ORDER BY COUNT(*) DESC
)
SELECT *
FROM Employee
WHERE eID IN (
  SELECT TOP 1 WITH TIES Manager
  FROM Employee
  GROUP BY Manager
  ORDER BY COUNT(*) DESC
)
如果要返回领带,请在查询中使用带领带的
TOP 1
,并在
WHERE
子句中使用
in
运算符:

SELECT *
FROM Employee
WHERE eID = (
  SELECT TOP 1 Manager
  FROM Employee
  GROUP BY Manager
  ORDER BY COUNT(*) DESC
)
SELECT *
FROM Employee
WHERE eID IN (
  SELECT TOP 1 WITH TIES Manager
  FROM Employee
  GROUP BY Manager
  ORDER BY COUNT(*) DESC
)

请参阅。

您可以尝试通过这种方式获取所有
“管理大多数其他员工”

上的演示

输出

eID fName   lName   Job     Manager Hired
102 Eliza   Rynd    Manager 101     1999-03-07 00:00:00.000

您可以使用CTE来分离逻辑,并获得计数最高的经理。如果两名经理管理相同数量的员工,请使用带领带的
,否则将排除一名经理

with x as (
    select top (1) with ties Manager
    from Table
    group by Manager
    order by Count(*) desc
)
select *
from x join Table t on t.eId=x.Manager

请给我们您的样本数据和预期结果:刚刚添加了所有daya@NguyễnVănPhong的预期结果是显示有关Eliza的所有信息,因为她管理的人最多。请实际显示您的预期结果,而不是期望人们阅读评论。
根据您提供的示例数据,下面返回null
,该查询不返回
NULL
值。我不认为
Eliza
Manager
101
?这是迄今为止最好的解释-但是还应该添加一个重要的解释,为什么
应该使用Max count而不是“
无法实现(假设它是
Max(count(…))
。您不能嵌套聚合函数,这只是无效语法。我知道这一点,但正如我在问题中引用的那样,OP似乎不是。可能还需要解释为什么必须使用
ORDER BY