用mybatis分组查询各个部门根据部门下工资最高和工资最低的人员姓名、和工资金额工资最低的要求显示必须大于1000
时间: 2024-05-15 21:20:05 浏览: 49
类似QQ分组,人员按部门分组
4星 · 用户满意度95%
首先需要在mapper.xml中编写SQL语句,实现分组查询各个部门根据部门下工资最高和工资最低的人员姓名、和工资金额。
```xml
<select id="selectEmployeeSalaryByDept" resultMap="EmployeeResultMap">
SELECT
e.name,
e.salary,
e.dept_id,
d.name AS deptName
FROM
employee e
JOIN department d ON e.dept_id = d.id
WHERE
e.salary >= 1000
GROUP BY
dept_id
HAVING
MAX(e.salary) > 0 AND MIN(e.salary) > 0
ORDER BY
e.dept_id ASC
</select>
```
其中,使用JOIN语句将employee表和department表关联,使用WHERE语句过滤掉工资低于1000的员工,使用GROUP BY语句按照部门分组,使用HAVING语句过滤掉工资最高和工资最低都为0的部门,使用ORDER BY语句按照部门id升序排列。
接下来在对应的mapper接口中定义方法:
```java
List<Employee> selectEmployeeSalaryByDept();
```
最后在业务逻辑层中调用该方法,获取查询结果:
```java
List<Employee> employees = employeeMapper.selectEmployeeSalaryByDept();
```
得到的结果将是每个部门下工资最高和工资最低的人员姓名、和工资金额,满足工资最低要求大于1000的要求。
阅读全文