2015-03-03 109 views
0

的最大數目我有一個表的員工查找部門有員工

id name dept 
1 bucky shp 
2 name shp 
3 other mrk 

我怎樣才能讓員工的最大數目的部門(或多個)的名字? ..

我需要導致

dept 
-------- 
shp 
+0

在哪裏存儲每個部門員工的數量?你的問題並不清楚。 – 2015-03-03 01:11:55

+0

這是一張員工表。帶有員工編號名稱。和部門員工正在工作。 – 2015-03-03 01:20:15

回答

0

假設你正在使用SQL Server和代表僱員的每個記錄。所以,你可以使用窗口函數來得到結果

WITH C AS (
    SELECT RANK() OVER (ORDER BY dept) Rnk 
      ,name 
      ,dept 
    FROM table 
) 
SELECT TOP 1 dept FROM 
(SELECT COUNT(Rnk) cnt, dept FROM C GROUP BY dept) t 
ORDER BY cnt DESC 
0

與普通表表達式,計算每個部門的行數,然後找到最大的數,然後用它來選擇最大的部門。

WITH depts(dept, size) AS (
    SELECT dept, COUNT(*) FROM employee GROUP BY dept 
), biggest(size) AS (
    SELECT MAX(size) FROM depts 
) 
SELECT dept FROM depts, biggest WHERE depts.size = biggest.size 
0
SELECT cnt,deptno FROM (
SELECT rank() OVER (ORDER BY cnt desc) AS rnk,cnt,deptno from 
(SELECT COUNT(*) cnt, DEPTNO FROM EMP 
GROUP BY deptno)) 
WHERE rnk = 1; 
+0

與其粘貼答案,不如解釋您爲什麼要提出此解決方案,以便用戶瞭解如何獨立完成此操作。 – creeperspeak 2018-01-10 18:37:09

相關問題