1.group by 单独使用,查询结果只显示一个分组的一条记录。
SELECT * FROM `employee`; 显示结果
select * from employee group by sex;显示结果
将只显示两条记录,这个值显然是不正确的,没有使用到集合函数,显示的值只是每一个组的第一条数据。
如果既要分组,也要显示数据,可以考虑使用group_concat()函数,
2.与group_concat()函数一起使用,每个分组中指定字段值显示出
来
select sex,group_concat(name) from employee group by sex;
再通过explode,implode函数的使用拿出数据。
3.与集合函数一起使用,集合函数包括count(),sum(),avg(),max()和min()。
select *,count(sex) as total from employee group by sex;
4与having一起使用
“having条件表达式”,可以限制输出结果。只有满足条件表达式的结果才显示。
实例:
[color=white !important]?
select sex,count(sex) from employee group by sex having count(sex) >= 3;
结果: [color=white !important]?
having条件表达式”作用于分组后的记录。
5.按多字段进行分组
select * from employee from group by sex,score;
查询结果先按sex分组,再按score进行分组
6与与with rollup一起使用
使用with rollup将会在所有记录的最后加上一条记录,这条记录是上面所有记录的总和 | select sex,count(sex) from employee group by sex with rollup;
|
结果: [color=white !important]?
| sex | count(sex)
女 | 1
男 | 5
null | 6
|
如果是字符串的话,比如姓名就会生成“张三,李四,王五”这种类型的结果,即name总和。
|