查每个部门的平均工资,正确的写法是
时间: 2024-02-11 18:07:28 浏览: 206
假设我们要查询的表名为`employee`,包含字段`dept`和`salary`,其中`dept`表示部门名称,`salary`表示工资。查询每个部门的平均工资可以使用如下SQL语句:
```
SELECT dept, AVG(salary) as avg_salary
FROM employee
GROUP BY dept;
```
其中,`GROUP BY`语句按照`dept`字段分组,`AVG()`函数计算每组的平均工资。最终返回每个部门的平均工资。
相关问题
查每个部门的平均工资,正确的写法是? A.select dept_id,max(sal) from emp group dept_id; B.select dept_id,avg(sal) from emp group by dept_id; C.select sal, avg(dept_id) from emp group by dept_id; D.select dept_id,max(sal) from emp group by dept_id;
B. select dept_id,avg(sal) from emp group by dept_id;
正确的查询每个部门的平均工资的语句应该是:
```
select dept_id,avg(sal) from emp group by dept_id;
```
该语句使用了 `group by` 子句按照 `dept_id` 对员工进行分组,并且使用 `avg` 聚合函数计算每个部门的平均工资。选项 A 中使用了 `max` 聚合函数,而不是 `avg`,选项 C 中使用了错误的语法,应该是 `avg(sal)` 而不是 `avg(dept_id)`,选项 D 中也使用了错误的聚合函数。因此,选项 B 是正确的写法。
以下SQL语句中,错误的是() A. SELECT AVG(sal) FROM emp; B. SELECT deptno,AVG(sal) FROM emp GROUP BY deptno; C. SELECT deptno,job,AVG(sal) FROM emp GROUP BY deptno,job; D. SELECT deptno,AVG(sal) FROM emp GROUP BY deptno HAVING job=’clerk’;
答案是 D.
在 SQL 中,HAVING 关键字用于筛选分组后的结果集。而 WHERE 关键字用于筛选未分组的原始数据集。所以 HAVING 子句中可以使用 GROUP BY 子句中的聚合函数,而 WHERE 子句中不行。
在选项 D 中,HAVING 子句中使用了 job='clerk' 条件,但是 job 列没有出现在 GROUP BY 子句中,这会导致语法错误。正确的写法应该是:
```SELECT deptno,AVG(sal) FROM emp WHERE job='clerk' GROUP BY deptno;```
这样可以先通过 WHERE 子句筛选出职位是 clerk 的员工,再按照部门进行分组,并计算每个部门的平均工资。
阅读全文