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

备考刷题,请到

CDA认证小程序

表t1中有id,name,salary三列,如果t1是一个论坛的发帖信息表,id是发帖人的编号,name是帖子的标题,salary是每次发帖论坛奖励的分数。 (4)显示发帖数超过5个的语句是
A. select id, count(name) from t1 group by id having id >5;
B. select id, count(name) from t1 group by id having count(name)>5;
C. select id, count(name) from t1 group by id having name>5;
D. select id, count(name) from t1 where id > 5 group by id;
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(0)

每个分组计算发帖个数(count(name))之后,我们希望输出结果大于5(count(name)>5)。 这里还是比较好理解的,难度在于对having的理解。我们平时用到条件子句时,它前面的关键词都是where,而这里用的是having。在使用GROUP BY对数据进行分组时需要使用HAVING作为限制条件的关键词。

正确答案是:B: select id, count(name) from t1 group by id having count(name)>5;

专业分析如下:

1. **选项A**: `select id, count(name) from t1 group by id having id > 5;`
- 这个语句的`having`子句是针对`id`进行过滤,而不是针对发帖数进行过滤。因此,这个语句的作用是选择`id`大于5的发帖人,而不是发帖数超过5次的发帖人。

2. **选项B**: `select id, count(name) from t1 group by id having count(name)>5;`
- 这个语句首先将表`t1`根据`id`进行分组,然后使用`having`子句进行过滤,选择发帖数(`count(name)`)大于5的发帖人。这个语句的逻辑是正确的,能够准确地显示发帖数超过5个的发帖人。

3. **选项C**: `select id, count(name) from t1 group by id having name>5;`
- 这个语句的`having`子句是针对`name`进行过滤,而`name`是帖子的标题,不是一个数值。因此,这个语句的逻辑是不正确的。

4. **选项D**: `select id, count(name) from t1 where id > 5 group by id;`
- 这个语句的`where`子句是针对`id`进行过滤,选择`id`大于5的发帖人,然后进行分组操作。这个语句没有与发帖数进行过滤,因此不符合题意。

综上所述,选项B是唯一正确的选择,因为它正确地实现了根据发帖数进行过滤的功能。