SQL查询得到最多

时间:2010-04-29 18:45:13

标签: sql sql-server

我有一个包含以下表格的数据库:

Employee (EmpID, FirstName, LastName, RegionID)
EmployeeSkills(EmpID, SkillID) [this is a linking table for the M:N relationship between Employees and skills]
Skills(SkillID, Description)

我需要列出大多数员工拥有的技能名称。我试过做一个max(count(skillID)),sqlserver说你不能在聚合函数上做一个聚合函数。还有其他想法吗?

提前谢谢!

4 个答案:

答案 0 :(得分:2)

这将返回顶部SkillsId显示的次数:

SELECT TOP 1 SkillID, COUNT(SkillID)
FROM EmployeeSkills
GROUP BY SkillID
ORDER BY COUNT(SkillID) DESC

答案 1 :(得分:2)

试试这个:

SELECT TOP 1
    SkillID, s.Description,COUNT(SkillID) AS CountOf
    FROM EmployeeSkills   e
        INNER JOIN Skills s ON e.SkillID=s.SkillID
    GROUP BY SkillID, s.Description
    ORDER BY 3 DESC

答案 2 :(得分:0)

SELECT s.Description, COUNT(*) from EmployeeSkills es
    INNER JOIN Skills s on s.SkillID = es.SkillID
GROUP BY s.Description ORDER BY COUNT(*) DESC

这将为您提供技能描述,以及有多少员工拥有技能。

答案 3 :(得分:0)

以下查询将返回最常用的技能ID:

  SELECT TOP 1 SkillID, COUNT(SkillID)
    FROM EmployeeSkills
GROUP BY SkillID
ORDER BY COUNT(SkillID) DESC 

然后,您可以使用它来获取技能的名称。