MySQL创建一个函数,输入一个部门名称,返回该部门的平均工资。
时间: 2023-07-30 22:08:01 浏览: 108
可以使用下面的 SQL 语句创建一个函数,实现输入部门名称返回平均工资的功能:
```
CREATE FUNCTION get_avg_salary(dept_name VARCHAR(50))
RETURNS DECIMAL(10,2)
BEGIN
DECLARE dept_id INT;
DECLARE avg_salary DECIMAL(10,2);
SELECT department_id INTO dept_id FROM departments WHERE department_name = dept_name;
SELECT AVG(salary) INTO avg_salary FROM employees WHERE department_id = dept_id;
RETURN avg_salary;
END;
```
这个函数首先根据输入的部门名称查询出部门的 ID,然后使用这个 ID 查询出该部门的员工的平均工资。最后将平均工资以 DECIMAL(10,2) 的格式返回。
相关问题
MySQL 创建一个存储函数,实现输入学号,返回学生的姓名
MySQL 存储函数是一种特殊的预编译SQL程序,它存储在数据库中并在需要时作为单个操作执行,通常用于处理复杂的计算或业务逻辑。创建一个存储函数来获取学生姓名,可以根据学号作为参数进行查询。以下是创建存储函数的基本步骤:
```sql
DELIMITER //
CREATE FUNCTION get_student_name(IN student_id INT)
RETURNS VARCHAR(100) CHARSET utf8mb4
BEGIN
DECLARE result VARCHAR(100);
SELECT name INTO result FROM students WHERE id = student_id; -- 假设有一个名为students的表,包含id和name字段
RETURN result;
END; //
DELIMITER ;
```
在这个例子中,`get_student_name`函数接受一个整数类型的学号`student_id`作为输入,然后从`students`表中查询对应的学生姓名,并将其结果作为字符串返回。
要调用这个存储函数,你可以这样做:
```sql
SELECT get_student_name(123); -- 传入你要查找的具体学号,这里假设123是一个有效的学号
```
mysql每一个部门平均工资的等级
您可以通过以下 SQL 语句查询每个部门的平均工资等级:
```
SELECT dept_name, AVG(salary) as avg_salary,
CASE
WHEN AVG(salary) < 5000 THEN '低'
WHEN AVG(salary) BETWEEN 5000 AND 10000 THEN '中'
ELSE '高'
END as salary_level
FROM employees JOIN departments USING(dept_no)
GROUP BY dept_name;
```
该语句会将 `employees` 表和 `departments` 表连接起来,计算每个部门的平均工资,并对平均工资进行分级。最后返回每个部门的名称、平均工资、以及平均工资等级。
其中,`CASE` 语句用于根据平均工资的范围分级,这里定义了三个等级:低、中、高,分别对应平均工资小于 5000、平均工资在 5000 到 10000 之间、平均工资大于 10000。
请注意,以上 SQL 语句仅为示例,具体查询语句需要根据实际数据表结构和数据格式进行调整。
阅读全文