2017-08-10 137 views
0

我想誰在「傢俱」部門 工作的員工數目我有兩個表 教研室 的dept_id DEPT_NAME 100,服裝, 200,傢俱,選擇 - 加入具有和組通過PLSQL

2.sales emp_id,sales_amt,dept_id

我已經做了這個..但它沒有顯示任何結果。

select count(emp_id) from department a join sales b on a.dept_id = b.dept_id group by dept_id having dept_name='furniture'; 

我知道我可以使用這個(因爲我知道傢俱的dept_id = 200):

select count(emp_id) from sales group by dept_id having dept_id=200; 

,但我想知道的是在第一個代碼問題。

回答

0

HAVING用於在聚合發生後過濾行。
打破你的代碼:

select count(emp_id) 
from department a 
join sales b on a.dept_id = b.dept_id 
group by a.dept_id 

此SQL代碼只返回只有1列,這是員工(count(emp_id))的數量的表格的結果。以下HAVING子句(having dept_name='furniture')找不到dept_name列,這會導致錯誤。

通過改變選擇的列,下面的SQL代碼可以工作(取決於你的RDBMS):

select count(emp_id), dept_name 
from department a 
join sales b on a.dept_id = b.dept_id 
group by a.dept_id 
having dept_name= 'furniture' 

或使用的dept_id = 200條件

​​
+0

Tahnk你的幫助。 – Paras