mysql查询工资高于公司平均工资的所有员工信息。显示员工信息,部门名称,上级领导,工资等级。
时间: 2023-11-11 15:29:19 浏览: 258
员工工资查询系统
5星 · 资源好评率100%
可以使用子查询和 JOIN 操作来实现这个需求,具体的 SQL 语句如下所示:
```
SELECT e.*, d.name AS dept_name, m.name AS mgr_name,
CASE
WHEN e.salary > avg_salary.salary THEN '高'
WHEN e.salary = avg_salary.salary THEN '中'
ELSE '低'
END AS salary_level
FROM employee e
JOIN department d ON e.dept_id = d.id
LEFT JOIN employee m ON e.mgr_id = m.id
CROSS JOIN (SELECT AVG(salary) AS salary FROM employee) avg_salary
WHERE e.salary > avg_salary.salary;
```
其中,`employee` 表是员工信息表,包含字段 `id`、`name`、`dept_id`、`mgr_id` 和 `salary`,分别表示员工的编号、姓名、部门编号、直接上级的编号和工资。`department` 表是部门信息表,包含字段 `id` 和 `name`,分别表示部门的编号和名称。
查询结果中,`e.*` 表示员工所有信息,`dept_name` 表示部门名称,`mgr_name` 表示直接上级姓名,`salary_level` 表示工资等级,分别是高、中、低三个等级。`avg_salary.salary` 表示公司平均工资。
这个 SQL 语句中,首先使用 `CROSS JOIN` 操作查询公司平均工资,并使用别名 `avg_salary` 表示。然后使用 JOIN 操作查询员工信息和部门信息,并使用 LEFT JOIN 操作查询直接上级信息。最后使用 WHERE 子句过滤出工资高于公司平均工资的员工,并使用 CASE 表达式计算工资等级。
阅读全文