2014-10-08 77 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風格。