mysql 存储过程实现查询每个部门工资前三的员工

编程入门 行业动态 更新时间:2024-10-22 19:24:06

mysql <a href=https://www.elefans.com/category/jswz/34/1764414.html style=存储过程实现查询每个部门工资前三的员工"/>

mysql 存储过程实现查询每个部门工资前三的员工

准备工作:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS `emp_info`;
CREATE TABLE `emp_info`  (`emp_id` int(11) NOT NULL COMMENT '员工id',`dept_id` int(11) NOT NULL COMMENT '部门id',`salary` decimal(10, 2) NULL DEFAULT NULL COMMENT '薪水',PRIMARY KEY (`dept_id`, `emp_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;INSERT INTO `emp_info` VALUES (10001, 1, 3000.00);
INSERT INTO `emp_info` VALUES (10002, 1, 3100.00);
INSERT INTO `emp_info` VALUES (10003, 1, 3200.00);
INSERT INTO `emp_info` VALUES (10004, 1, 2500.00);
INSERT INTO `emp_info` VALUES (10005, 1, 2200.00);
INSERT INTO `emp_info` VALUES (20001, 2, 4100.00);
INSERT INTO `emp_info` VALUES (20002, 2, 4200.00);
INSERT INTO `emp_info` VALUES (20003, 2, 4300.00);
INSERT INTO `emp_info` VALUES (20004, 2, 4150.00);
INSERT INTO `emp_info` VALUES (30001, 3, 2300.00);SET FOREIGN_KEY_CHECKS = 1;

 思路:很明显如果给定一个部门id,让大家查询该部门工资前三的员工信息只需要where+order by+limit就能实现了,但是要想返回多个部门的前三,感觉需要存储过程。先查询出所有的部门id,然后以此为条件多次查询。暂时只能查出多个结果集,没有汇合结果集,这个感觉还是后台处理比较简单...

delimiter $$
drop PROCEDURE if EXISTS deptSalaryTopThree;
create procedure deptSalaryTopThree()
BEGIN
declare deptId  int;-- 定义游标,并将sql结果集赋值到游标中
declare deptIdList cursor for select distinct(dept_id) from emp_info;-- 循环赋初始值,声明当游标遍历完后将标志变量置成某个值,然后退出循环declare CONTINUE HANDLER for not found set deptId=null;#打开游标,开始遍历
open deptIdList;
fetch deptIdList into deptId;
#循环判断
while (deptId is not null and deptId>0) doselect * from emp_info where dept_id=deptId order by salary desc limit 3; #赋值下一个游标FETCH deptIdList into deptId;
end while;
#关闭游标
CLOSE deptIdList;
end $$
delimiter ;call deptSalaryTopThree();

结果展示:

原始表数据:

查询结果:

更多推荐

mysql 存储过程实现查询每个部门工资前三的员工

本文发布于:2024-03-08 15:22:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721259.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:存储过程   前三   工资   员工   部门

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!