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语句