select- 在 plsql 中加入 having 和 group by
select- join having and group by in plsql
我想要在 'Furniture' 部门工作过的员工人数
我有两张桌子
1.department
dept_id dept_name
100 , 服装,
200 , 家具,
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;
但我想知道第一个代码中的问题是什么。
HAVING用于在聚合发生后过滤行。
分解你的代码:
select count(emp_id)
from department a
join sales b on a.dept_id = b.dept_id
group by a.dept_id
此 SQL 代码仅 returns 一个 table 结果只有 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
我想要在 'Furniture' 部门工作过的员工人数 我有两张桌子 1.department dept_id dept_name 100 , 服装, 200 , 家具,
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;
但我想知道第一个代码中的问题是什么。
HAVING用于在聚合发生后过滤行。
分解你的代码:
select count(emp_id)
from department a
join sales b on a.dept_id = b.dept_id
group by a.dept_id
此 SQL 代码仅 returns 一个 table 结果只有 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