id是发帖人的编号,是唯一的,我们想知道每个会员的发帖数,group by id----按照id分组,就是必然选择。 count(name)是对按照id分组之后的结果计算name的个数。
正确答案是:A: `select id ,count(name) from t1 group by id;`
### 专业分析:
1. **选项A**: `select id ,count(name) from t1 group by id;`
- 这条语句的作用是按发帖人的编号(id)对帖子进行分组,然后统计每个发帖人发帖的数量(count(name))。
- 这是最直接和标准的做法,符合题目要求“显示每个会员发了几个帖子”。
2. **选项B**: `select id ,count(name) from t1 group by id having count(name) > 5;`
- 这条语句在分组统计之后,使用了HAVING子句来过滤结果,只显示发帖数大于5的会员。
- 这并不完全符合题目要求,因为题目并没有要求过滤出发帖数大于5的会员。
3. **选项C**: `select id ,count(name) from t1 group by id having count(name) > 5 order by count(name);`
- 这条语句在选项B的基础上增加了`order by`子句来对结果进行排序。
- 同样,由于题目没有要求过滤和排序,所以这条语句不完全符合题目要求。
4. **选项D**: `select id ,count(name) from t1 where id > 100 group by id;`
- 这条语句在分组统计之前,使用了WHERE子句来过滤出id大于100的记录。
- 这也不符合题目要求,因为题目没有要求对id进行任何过滤。
因此,最符合题目要求的语句是选项A。