考试报名
考试报名
考试内容
考试大纲
在线客服
返回顶部

备考刷题,请到

CDA认证小程序

(复合题)建立如下数据库表:create table department( departid int not null primary key, deptname varchar(20) not null ); create table employee( employeeid int not null, deptid int not null, ename varchar(20) not null,job varchar(10),sal decimal(10,2)); (2)以下 SQL 语句中,错误的是()。
A. select avg(sal) from employee;
B. select deptid,avg(sal) from employee group by deptid;
C. select deptid,job,avg(sal) from employee group by deptid,job;
D. select deptid,avg(sal) from employee group by deptid HAVING job='clerk';
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(0)

having 子句中的筛选字段必须是可以出现在分组结果中的字段。

正确答案是D: `select deptid,avg(sal) from employee group by deptid HAVING job='clerk';`

### 分析:
- **A: `select avg(sal) from employee;`**
- 该语句计算员工表中所有员工的平均薪水,没有任何错误。

- **B: `select deptid,avg(sal) from employee group by deptid;`**
- 该语句按照部门ID分组,并计算每个部门的平均薪水,没有任何错误。

- **C: `select deptid,job,avg(sal) from employee group by deptid,job;`**
- 该语句按照部门ID和职位分组,并计算每个部门每个职位的平均薪水,没有任何错误。

- **D: `select deptid,avg(sal) from employee group by deptid HAVING job='clerk';`**
- 该语句试图在分组之后使用`HAVING`子句来筛选数据。`HAVING`子句用于对分组后的结果进行过滤,而不是对原始数据进行过滤。`job='clerk'`应该出现在`WHERE`子句中,而不是`HAVING`子句中。正确的写法应该是:
```sql
select deptid, avg(sal)
from employee
where job='clerk'
group by deptid;
```

综上所述,D选项的SQL语句存在错误。