给定表格:
Departments: dept_id, dept_name
Employees: dept_id, emp_id, salary
我试着提出一个查询,显示部门id、部门名称、特定部门的平均工资,以及该部门的员工人数,其中部门员工少于20人,平均工资低于2000人。
下面是我用来显示工资低于2000的员工的查询:
这就是我的薪水
SELECT dept_id, salary
FROM employees
WHERE (salary) < 2000;
我知道这个可以用来计算部门里的人数
SELECT count(*) as count,dept.dept_name
FROM employees
INNER JOIN dept on employees.department_id = dept.department_id
GROUP BY dept.dept_name;
我该如何在一个查询中实现它,以便它符合规范?
2条答案
按热度按时间au9on6nz1#
添加
HAVING
子句,它仅限于平均工资低于2000的部门。一
WHERE
条款适用于个人记录,但HAVING
子句适用于组,在GROUP BY
已经跑了。在这种情况下,您需要后者。编辑:你最好按
dept_id
列,因为它应该始终是唯一的(并且应该是该表中的主键)。按部门名称分组的潜在风险是,两个不同的部门可能具有相同的名称。ws51t4hk2#