MySQL创建一个函数,输入一个部门名称,返回该部门的平均工资。
时间: 2023-07-30 15:08:01 浏览: 115
可以使用下面的 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 中,可以将一段查询逻辑制成函数使用,称为存储过程(Stored Procedure)。存储过程是一组预编译的 SQL 语句和流程控制语句,可以接收参数、执行特定任务并返回结果。
下面是一个简单的例子,展示了如何创建一个存储过程来查询员工的平均工资:
```sql
DELIMITER //
CREATE PROCEDURE get_avg_salary(IN p_department VARCHAR(50), OUT p_avg_salary DECIMAL(10,2))
BEGIN
SELECT AVG(salary) INTO p_avg_salary FROM employees WHERE department = p_department;
END //
DELIMITER ;
```
这个存储过程接收一个部门名称作为输入参数,计算该部门的平均工资,并将结果保存在输出参数 `p_avg_salary` 中。创建存储过程的语法包括以下几个关键步骤:
1. 使用 `DELIMITER` 命令指定语句分隔符,以免与存储过程中的语句分隔符冲突。
2. 使用 `CREATE PROCEDURE` 命令创建存储过程,并指定输入和输出参数(如果需要)。
3. 在 `BEGIN` 和 `END` 之间编写存储过程的 SQL 语句和流程控制语句。
4. 使用 `DELIMITER` 命令还原语句分隔符。
创建存储过程后,可以使用 `CALL` 命令调用它。例如:
```sql
CALL get_avg_salary('Sales', @avg_salary);
SELECT @avg_salary;
```
这个例子调用 `get_avg_salary` 存储过程,计算销售部门的平均工资,并将结果保存在变量 `@avg_salary` 中。最后一个 `SELECT` 语句用于显示结果。
阅读全文