时间:2022-12-06 01:57
mysql分组查询的方法:使用GROUP BY语句进行分组,根据一个或多个列对结果集进行分组。
具体操作步骤:
可以使用GROUP BY语句进行分组,GROUP BY语句能够根据一个或多个列对结果集进行分组。
示例:
1.首先新建一个数据,例如将以下数据导入数据库中。
SETNAMESutf8;SETFOREIGN_KEY_CHECKS=0;
------------------------------
--Tablestructurefor`employee_tbl`
------------------------------
DROPTABLEIFEXISTS`employee_tbl`;
CREATETABLE`employee_tbl`(
`id`int(11)NOTNULL,
`name`char(10)NOTNULLDEFAULT'',
`date`datetimeNOTNULL,
`singin`tinyint(4)NOTNULLDEFAULT'0'COMMENT'登录次数',
PRIMARYKEY(`id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
------------------------------
--Recordsof`employee_tbl`
------------------------------
BEGIN;
INSERTINTO`employee_tbl`VALUES('1','小明','2016-04-2215:25:33','1'),('2','小王','2016-04-2015:25:47','3'),('3','小丽','2016-04-1915:26:02','2'),('4','小王','2016-04-0715:26:14','4'),('5','小明','2016-04-1115:26:40','4'),('6','小明','2016-04-0415:26:54','2');
COMMIT;
SETFOREIGN_KEY_CHECKS=1;
2.导入数据成功后,执行以下SQL语句查询相关数据信息。
mysql>setnamesutf8;mysql>SELECT*FROMemployee_tbl;
+----+--------+---------------------+--------+
|id|name|date|singin|
+----+--------+---------------------+--------+
|1|小明|2016-04-2215:25:33|1|
|2|小王|2016-04-2015:25:47|3|
|3|小丽|2016-04-1915:26:02|2|
|4|小王|2016-04-0715:26:14|4|
|5|小明|2016-04-1115:26:40|4|
|6|小明|2016-04-0415:26:54|2|
+----+--------+---------------------+--------+
6rowsinset(0.00sec)
3.利用GROUP BY语句对数据表按名字进行分组,并统计每个人有多少条记录。
mysql>SELECTname,COUNT(*)FROMemployee_tblGROUPBYname;+--------+----------+
|name|COUNT(*)|
+--------+----------+
|小丽|1|
|小明|3|
|小王|2|
+--------+----------+
3rowsinset(0.01sec)
相关语句:
使用WITH ROLLUP实现在分组统计数据基础上再进行相同的统计。
比如对数据表按名字进行分组,再统计每个人登录的次数。
mysql> SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
+--------+--------------+|name|singin_count|
+--------+--------------+
|小丽|2|
|小明|7|
|小王|7|
|NULL|16|
+--------+--------------+
4rowsinset(0.00sec)
提示:记录NULL表示所有人的登录次数。