MySQL GROUP BY语句

  

MySQL GROUP BY语句

GROUP BY语句根据一个或多个列对结果集进行分组。

在分组的列上我们可以使用计数,和,AVG,等函数。

GROUP BY语法

SELECT  column_name,函数(column_name)   得到table_name   WHERE  column_name  operator 价值   GROUP  BY  column_name; <人力资源/>

实例演示

本章节实例使用到了以下表结构及数据,使用前我们可以先将以下数据导入数据库中。

SET  NAMES  use utf8;   SET  FOREIGN_KEY_CHECKS =, 0;      -,- - - - - - - - - - - - - - - - - - - - - - - - - - - - -   ,,,Table  structure  for “employee_tbl”   -,- - - - - - - - - - - - - - - - - - - - - - - - - - - - -   DROP  TABLE  IF  EXISTS “employee_tbl”;   CREATE  TABLE “employee_tbl”, (   “id”才能,int (11), NOT 空,   “名字”,才能char (10), NOT  NULL  DEFAULT  & # 39; & # 39;   “日期”,才能datetime  NOT 空,   “唱啊”,才能非常小的整数(4),NOT  NULL  DEFAULT  & # 39; 0 & # 39;, COMMENT  & # 39;登录次数& # 39;,   PRIMARY 才能;KEY  (id)   ),引擎=InnoDB  DEFAULT  CHARSET=use utf8;      -,- - - - - - - - - - - - - - - - - - - - - - - - - - - - -   ,,,Records  of “employee_tbl”   -,- - - - - - - - - - - - - - - - - - - - - - - - - - - - -   开始;   INSERT  INTO “employee_tbl”, VALUES (& # 39; 1 & # 39;,, & # 39;小明& # 39;,,& # 39;2016 - 04 - 22,15:25:33& # 39;,,& # 39;1 & # 39;),,(& # 39;2 & # 39;,,& # 39;小王& # 39;,,& # 39;2016 - 04 - 20,15:25:47& # 39;,,& # 39;3 & # 39;),,(& # 39;3 & # 39;,,& # 39;小丽& # 39;,,& # 39;2016 - 04 - 19,15:26:02& # 39;,,& # 39;2 & # 39;),,(& # 39;4 & # 39;,,& # 39;小王& # 39;,,& # 39;2016 - 04 - 07,15:26:14& # 39;,,& # 39;4 & # 39;),,(& # 39;5 & # 39;,,& # 39;小明& # 39;,,& # 39;2016 - 04 - 11,15:26:40& # 39;,,& # 39;4 & # 39;),,(& # 39;6 & # 39;,,& # 39;小明& # 39;,,& # 39;2016 - 04 - 04 -,15:26:54& # 39;,,& # 39;2 & # 39;);   提交;      SET  FOREIGN_KEY_CHECKS =, 1,

导入成功后,执行以SQL语下句:

mysql>, SET  names  use utf8;   mysql>, SELECT  *,得到employee_tbl;   + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +   | |,id  name ,, |, date ,,,,,,,,,,,,,,, |, singin  |   + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +   |,,1,|,小明,|,2016 - 04 - 22,15:25:33  |,,,,,, 1 |   |,,2,|,小王,|,2016 - 04 - 20,15:25:47  |,,,,,, 3 |   |,,3,|,小丽,|,2016 - 04 - 19,15:26:02  |,,,,,, 2 |   |,,4,|,小王,|,2016 - 04 - 07,15:26:14  |,,,,,, 4 |   |,,5,|,小明,|,2016 - 04 - 11,15:26:40  |,,,,,, 4 |   |,,6,|,小明,|,2016 - 04 - 04 -,15:26:54  |,,,,,, 2 |   + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +   6,rows  set 拷贝;(0.00,sec)

接下来我们使用GROUP BY语句将数据表按名字进行分组,并统计每个人有多少条记录:

mysql>, SELECT 名字,,COUNT(*),得到,,employee_tbl  GROUP  BY 名称;   + - - - - - - - - - - - - - - - - - - - - - +   |,name ,, |, COUNT (*) |   + - - - - - - - - - - - - - - - - - - - - - +   | |,小丽还以为,,,,,,,,1 |   | |,小明还以为,,,,,,,,3 |   | |,小王还以为,,,,,,,,2 |   + - - - - - - - - - - - - - - - - - - - - - +   3,rows  set 拷贝;(0.01,sec)

使用与汇总

汇总可以实现在分组统计数据基础上再进行相同的统计(和,AVG,计数…)。

例如我们将以上的数据表按名字进行分组,再统计每个人登录的次数:

mysql>, SELECT 名称,金额(唱),as  singin_count 得到,employee_tbl  GROUP  BY  name  WITH 汇总;   + - - - - - - - - - - - - - - - - - - - - - - - - - - +   |,name ,, |, singin_count  |   + - - - - - - - - - - - - - - - - - - - - - - - - - - +   | |,小丽还以为,,,,,,,,,,,,2 |   | |,小明还以为,,,,,,,,,,,,7 |   | |,小王还以为,,,,,,,,,,,,7 |   |,NULL ,, |,,,,,,,,,,, 16 |   + - - - - - - - - - - - - - - - - - - - - - - - - - - +   4,rows  set 拷贝;(0.00,sec)

其中记录空表示所有人的登录次数。

我们可以使用合并来设置一个可以取代零的名称,合并语法:

select 合并(a, b, c);

MySQL GROUP BY语句