我想要在'家具'部门工作的员工数量 我有两张桌子 教研室 dept_id dept_name 100,服装, 200,家具,
2。销售 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 :(得分: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条件
select count(emp_id), a.dept_id
from department a
join sales b on a.dept_id = b.dept_id
group by a.dept_id
having a.dept_id = 200