创建函数dept_sal(),根据部门名,返回该部门的平均工资
时间: 2023-04-04 13:04:48 浏览: 224
好的,我可以回答这个问题。以下是函数dept_sal()的代码:
```c
float dept_sal(char* dept_name) {
float total_sal = 0;
int count = 0;
for (int i = 0; i < num_employees; i++) {
if (strcmp(dept_name, employees[i].dept) == 0) {
total_sal += employees[i].salary;
count++;
}
}
if (count == 0) {
return 0;
} else {
return total_sal / count;
}
}
```
这个函数会遍历所有员工,找到部门名与传入参数相同的员工,计算他们的工资总和并统计人数,最后返回平均工资。如果没有找到任何员工,则返回0。
相关问题
创建出满足下述条件的视图(视图名称为ViewPractice)。 分数 4 作者 龙彦宇 单位 广东东软学院 创建出满足下述条件的视图(视图名称为ViewPractice)。 (1)按部门名称分组,统计除销售部外每个部门的部门人数和平均工资,并为每个结果字段起别名。 (2)使用子查询的结果(部门名称,部门人数,平均工资)创建视图。 (3)对该视图执行SELECT语句的结果如下所示: 表结构: 请在这里写定义表结构的SQL语句。例如: CREATE TABLE emp ( empno INT(4) PRIMARY KEY COMMENT'员工编号', ename VARCHAR(10) NOT NULL COMMENT'员工姓名', job VARCHAR(10) COMMENT'员工岗位', hiredate DATE COMMENT'入职日期', sal DECIMAL(7,2) COMMENT'工资', deptno INT(2) NOT NULL COMMENT'部门编号' ) ; CREATE TABLE dept (
好的,您的问题是关于 SQL 视图的。根据题目要求,创建一个名为 ViewPractice 的视图,可以使用以下 SQL 语句:
```
CREATE VIEW ViewPractice AS
SELECT
CASE
WHEN dept.dname = '销售部' THEN NULL
ELSE dept.dname
END AS dept_name,
COUNT(emp.empno) AS emp_count,
AVG(emp.sal) AS avg_sal
FROM emp
JOIN dept ON emp.deptno = dept.deptno
GROUP BY dept.dname
HAVING dept_name IS NOT NULL;
```
这里使用了 CASE WHEN 语句将销售部的部门名称设置为 NULL,然后使用 JOIN 操作符将 emp 表和 dept 表连接起来。接着使用 GROUP BY 子句对部门名称进行分组,并使用 COUNT 和 AVG 函数分别计算部门人数和平均工资。最后使用 HAVING 子句过滤掉部门名称为 NULL 的结果即可。这个视图包含了部门名称、部门人数和平均工资三个字段。可以通过以下 SELECT 语句查询该视图的结果:
```
SELECT * FROM ViewPractice;
```
查询结果将包含每个除销售部外的部门的部门名称、部门人数和平均工资。
创建一个函数,用于计算EMP表中指定部门的平均工资,并输出部门编号为10的员工平均工资。并在SQLPlus客户端环境直接运行方式和PL/SQL编程方式调用该函数,验证其功能的正确性
以下是创建的函数代码:
```sql
CREATE OR REPLACE FUNCTION calc_avg_salary(dept_id IN NUMBER)
RETURN NUMBER
IS
avg_sal NUMBER;
BEGIN
SELECT AVG(salary) INTO avg_sal
FROM emp
WHERE department_id = dept_id;
RETURN avg_sal;
END;
/
```
可以通过以下方式在SQLPlus客户端环境直接运行:
```sql
SELECT calc_avg_salary(10) FROM dual;
```
也可以通过以下方式在PL/SQL编程中调用:
```sql
DECLARE
avg_sal NUMBER;
BEGIN
avg_sal := calc_avg_salary(10);
DBMS_OUTPUT.PUT_LINE('Average salary for department 10 is: ' || avg_sal);
END;
```
阅读全文