2014-01-16 122 views
0

附加專欄中,我有2個表:集合函數

EMP表(員工表):

CREATE TABLE EMP 
(
"ID" NUMBER, 
"DEPT_ID" NUMBER, 
"NAME" VARCHAR2(30), 
PRIMARY KEY ("ID") ENABLE, 
FOREIGN KEY ("DEPT_ID") REFERENCES DEPARTMENT ("ID") ENABLE 
); 

DEPARTMENT表:

CREATE TABLE DEPARTMENT 
(
"ID" NUMBER, 
"NAME" VARCHAR2(30), 
PRIMARY KEY ("ID") 
); 

我想寫查詢,這將顯示

DEPARTMENT.ID | DEPARMTENT.NAME | COUNT of employees working at the department. 

我知道如何顯示身份證,但後來我無法顯示姓名。怎麼做?部門名稱不是唯一的,因此會使其複雜化。 DEPARTMENT ID可以不分配給任何員工。

查詢:

select d.id, count(e.id) 
from emp e 
right join department d 
on e.DEPT_ID = d.ID 
group by d.id 
order by d.id; 

顯示ID和計數,但沒有名稱。

+0

更新,這一問題並不應該這樣簡單的例子: )。 – Pawel

回答

4

你可以只是這樣做:

select d.id, d.name, count(e.id) 
from emp e 
right join department d 
on e.DEPT_ID = d.ID 
group by d.id, d.name 
order by d.id; 

它不是由department.name不是唯一的,因爲department.id and department.name的組合是不同的複雜..

+0

它正在工作,謝謝:)。我忘記了,幾個要素可以在小組條款中。 – Pawel

+0

只需要注意,在某些RDBMS(例如PostgreSQL)中,如果d.id是主鍵,則group by子句中不需要d.name。 –