group by是跟MySQL的聚合函数一起使用的,通过把一个列(column)分成组(group),来分别使用聚合函数。
常见聚合函数:
AVG() 求平均数COUNT() 求列的总数MAX() 求最大值MIN() 求最小值SUM() 求和聚合函数特点就是它们的结果都是一个单一的值,多个行一起应用一个这样的函数后,就变成一行了。加上Group by之后,就打破了这个规则了,数据都先被group起来,然后再分别应用聚合函数。举例:
drop table toy; create table toy (name varchar(40), version varchar(40)); insert into toy values ('toy1','v1'); insert into toy values ('toy1','v2'); insert into toy values ('toy2','v1'); insert into toy values ('toy2','v2'); insert into toy values ('toy2','v3'); insert into toy values ('toy3','v1'); 12345678910 12345678910我通过上面的mysql代码生成一个表叫toy: 我们可以通过先把toy表按name分组(group),然后再数不同名字的toy有多少个,SQL代码是:
select name , count(name) from toy group by name; 1 1可以看到,我们group by name,name列就是没有重复的,流程是,把所有列按name分组,然后应用count这个函数。coun() 的作用是数有多少列。 我来看来按version分组看看:
select version , count(name) from toy group by version; 1 1是不是跟预期的结果一样呢?
总结:
group by 跟聚合函数一起使用作用是先把table按列分组(比如说group by name,是按name分组),然后各个group分别使用聚合函数,然后得出结果。 参考自: http://blog.csdn.net/u010093140/article/details/50479752