2017-08-10 53 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