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

备考刷题,请到

CDA认证小程序

数据库中有两张表,users表中有三个字段(user_id,user_name,create_at),orders表中有三个字段(order_id,user_id,amount)。 (2)运行以下SQL查询语句,哪句不会报错
A. select user_id,avg(amount) from orders where avg(amount)>2000;
B. select user_id,avg(amount) from orders group by user_id where avg(amount)>2000;
C. select user_id,avg(amount) from orders where avg(amount)>2000 group by user_id;
D. select user_id,avg(amount) from orders group by user_id having avg(amount)>2000;
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(0)

查询语句的书写顺序中,where子句应该在group by子句之前,且where子句中不能用聚合函数。

正确答案是:D: `select user_id, avg(amount) from orders group by user_id having avg(amount)>2000;`

**分析:**

A: `select user_id, avg(amount) from orders where avg(amount)>2000;`
- 这句SQL会报错,因为`avg(amount)`是一个聚合函数,不能在`WHERE`子句中直接使用聚合函数。

B: `select user_id, avg(amount) from orders group by user_id where avg(amount)>2000;`
- 这句SQL会报错,因为`WHERE`子句应该在`GROUP BY`之前,并且`WHERE`子句不能使用聚合函数。聚合函数应该在`HAVING`子句中使用。

C: `select user_id, avg(amount) from orders where avg(amount)>2000 group by user_id;`
- 这句SQL会报错,因为`WHERE`子句不能使用聚合函数。聚合函数应该在`HAVING`子句中使用。

D: `select user_id, avg(amount) from orders group by user_id having avg(amount)>2000;`
- 这句SQL是正确的。`HAVING`子句用于在分组后的结果中进行过滤,可以使用聚合函数。这里`avg(amount)>2000`是在分组后进行过滤,符合SQL语法。

因此,只有D选项不会报错。