select-在plsql中加入having和group by

时间:2017-08-10 04:06:06

标签: sql select join group-by having

我想要在'家具'部门工作的员工数量 我有两张桌子 教研室   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;

但我想知道第一个代码中的问题是什么。

1 个答案:

答案 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