12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
建站问答 时间:2024-12-01 18:59:31
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
mysql中group by用法:在SELECT查询语句的WHERE条件子句后面添加group by关键字,group by主要是用来结合聚合函数,根据一个或多个列对结果集进行分组。GROUP BY 语法SELECTcolum
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
mysql中group by用法:在SELECT查询语句的WHERE条件子句后面添加group by关键字,group by主要是用来结合聚合函数,根据一个或多个列对结果集进行分组。
GROUP BY 语法
SELECTcolumn_name,function(column_name)FROMtable_name
WHEREcolumn_nameoperatorvalue
GROUPBYcolumn_name;
实例演示
使用到了以下表结构及数据,使用前我们可以先将以下数据导入数据库中。
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;
导入成功后,执行以下 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)
接下来我们使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:
mysql>SELECTname,COUNT(*)FROMemployee_tblGROUPBYname;+--------+----------+
|name|COUNT(*)|
+--------+----------+
|小丽|1|
|小明|3|
|小王|2|
+--------+----------+
3rowsinset(0.01sec)
使用 WITH ROLLUP
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
例如我们将以上的数据表按名字进行分组,再统计每个人登录的次数:
mysql>SELECTname,SUM(singin)assingin_countFROMemployee_tblGROUPBYnameWITHROLLUP;+--------+--------------+
|name|singin_count|
+--------+--------------+
|小丽|2|
|小明|7|
|小王|7|
|NULL|16|
+--------+--------------+
4rowsinset(0.00sec)
其中记录 NULL 表示所有人的登录次数。
我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:
selectcoalesce(a,b,c);
参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。
以下实例中如果名字为空我们使用总数代替:
mysql>SELECTcoalesce(name,'总数'),SUM(singin)assingin_countFROMemployee_tblGROUPBYnameWITHROLLUP;+--------------------------+--------------+
|coalesce(name,'总数')|singin_count|
+--------------------------+--------------+
|小丽|2|
|小明|7|
|小王|7|
|总数|16|
+--------------------------+--------------+
4rowsinset(0.01sec)
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19