gpt4 book ai didi

mySQL:如何编写满足两个或多个条件的查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:43 25 4
gpt4 key购买 nike

给定表格:

Departments: dept_id, dept_name
Employees: dept_id, emp_id, salary

我试图提出一个查询,显示部门 ID、部门名称、特定部门的平均工资以及该部门的员 worker 数。 WHERE 员工少于 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;

我将如何在单个查询中实现它以使其符合规范?

最佳答案

在您的查询中添加一个 HAVING 子句,该子句仅限于平均工资低于 2000 的部门。

SELECT
d.dept_id,
d.dept_name,
COUNT(*) AS count
FROM employees e
INNER JOIN dept d
ON e.department_id = d.department_id
GROUP BY
d.dept_id -- or maybe GROUP BY d.dept_id, d.dept_name if this doesn't work
HAVING
COUNT(*) < 20 AND
AVG(salary) < 2000;

WHERE 子句适用于单个记录,而 HAVING 子句在 GROUP BY 运行后适用于组。在这种情况下,您需要后者。

编辑:您最好按 dept_id 列分组,因为它应该始终是唯一的(并且应该是该表中的主键)。按部门名称分组的潜在风险是两个不同的部门可能具有相同的名称。

关于mySQL:如何编写满足两个或多个条件的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50102060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com