我有一个包含以下表格的数据库:
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说你不能在聚合函数上做一个聚合函数。还有其他想法吗?
提前谢谢!
答案 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
然后,您可以使用它来获取技能的名称。