select class_id from student group by sex // 按照性别分组
- 为什么查询列表(或having子句)中只能写
group by
中的字段(或者聚合函数)?
假设我们分组查询之后有一个中间表,如下所示:
如果我们要执行如下的sql语句:
select name,age from student group by sex
- 上面的中间表中只有两组数据,但是每组数据中有多条数据,那么我们应该返回哪一个数据的
name
和age
呢?
很明显这条sql语句是不能执行的。 - 那么我们为什么可以使用聚合函数呢?
首先,聚合函数是指:
对一组值
执行计算,并返回单个值
。(即多个输入,单个输出)
再次查看我们的中间表,分组之后的每组数据中都有多条数据,但是我们只需要一个值,正好符合聚合函数的规范。