2013-05-28 70 views
0

我正在使用oracle的SQL Developer。首先,我有這張表:Oracle SQL查詢問題

Name   Null  Type   
-------------- -------- ------------ 
EMPLOYEE_ID NOT NULL NUMBER(6)  
FIRST_NAME    VARCHAR2(20) 
LAST_NAME  NOT NULL VARCHAR2(25) 
DEPARTMENT_ID   NUMBER(4)  

我想檢索(選擇)大部分員工的部門的ID。 我通過一份聲明中設法獲取全體員工的數量在每一個部門:

select count(employee_id), department_id 
from employees 
group by department_id; 

它給了我這樣的:

count(employee_id) |  department_id 
---------------------|------------------ 
     6      100 
    16      30 
     1      12 

我想什麼做的僅僅是檢索department_id 30,在這種情況下,員工人數最多。

回答

1

在甲骨文做這方面的一個典型方式:

select department_id 
from (select count(employee_id), department_id 
     from employees 
     group by department_id 
     order by count(employee_id) desc 
    ) t 
where rownum = 1; 

如果你有潛在的重複,並希望所有部門的ID,然後加入到最大或解析函數是一個更好的辦法。例如:

select department_id 
from (select count(employee_id), department_id, 
      rank() over (order by count(employee_id) desc) as seqnum 
     from employees 
     group by department_id 
    ) t 
where seqnum = 1; 
+0

謝謝。第一個片段完美地工作,但第二個片段給了我不止一個結果。 – Teo

+0

@Theo。 。 。 。 'desc'將解決這個問題(我在閱讀你的評論之前已經修復了它)。 –