数据分组
根据上一篇博文中所看到的,SQL聚集函数可用来汇总数据。这使我们能够对行进行计数,计算和与平均数,获得最大和最小值而不用检索所有数据。
目前为止的所有计算都是在表的所有数据或匹配特定的where子句的数据上进行的。
例如,在一门公共选修课中,我们需要统计来自每个班的人数各有多少个?应该怎么做呢?
可能有的人像下面这样做:
select class,count(*) from student3 where class=1001;
但是,这样你只能够得到一个班级选择这门公选课的人数,并不能得到选择这门可选课其它班级的人数。
因此,group by就排上用场了。
创建分组:group by
为更好的实践group by,建立了如下的student3表。
用group by分组如下:
select class ,count(*) from student3 group by class;//按照班级进行分组
注意:因为使用了group by,就不必指定要计算和估值的每个组了,系统会自动完成。group by子句指示MySQL分组数据,然后对每个组而不是整个结果集进行聚集。