2014-10-08 141 views
1

我需要帮助打印雇员人数最多的部门。因为,MAX(COUNT(*))实际上不起作用,任何人都可以帮助我吗?SQLPlus如何打印COUNT(*)的最大值?

假设我有两个名为dept和emp的表,其中每个表分别具有deptno和empdeptno。 我这算每个部门的每一个员工:

SELECT dept.deptname "Department", 
    (SELECT COUNT(*) 
    FROM emp 
    WHERE emp.empdeptno = dept.deptno) "Number of Employees" 
FROM dept 
ORDER BY COUNT(*) DESC; 

你如何打印最高员工数的部门,而无需使用限制与ORDER BY?

+0

为什么'max(count(*))'不起作用?这是有效的,有一个合适的组合? – 2014-10-08 16:27:18

+1

您是否试过ORDER BY“员工人数”DESC? – PeerBr 2014-10-08 16:41:54

+0

只是一个提示:如果您向我们提供确切的错误,您可以帮助我们帮助您。在你的情况下,这可能类似于“ORDER”中的“未知列'COUNT()'或者只是您获得了值X,但这不是您所期望的:-) – PeerBr 2014-10-08 16:48:38

回答

1
SELECT dept.deptname "Department", COUNT(emp.empdeptno) AS "Number of Employees" 
FROM dept 
LEFT JOIN emp ON dept.deptno = emp.empdeptno 
GROUP BY dept.deptname 
ORDER BY COUNT(emp.empdeptno) DESC 

如果dept.deptname是不是关键,并可能重复你可能会考虑GROUP BY dept.UniqueDepartmentKey, dept.deptname

您可能需要参考别名:GROUP BY "Department",具体取决于您的SQL风格。