一,聚合函数的应用
MySQL中提供了聚合函数来实现对某些数据进行统计。这些聚合函数有count(),sum(),avg(),max(),min()。
首先根据一下指令创建学生成绩统计表
1.create database xs;
2.use xs;
3.create table xscj(学号 varchar(11),姓名 varchar(25),班级 varchar(10),性别 varchar(6),出生日期 date,java语言 decimal(3,1),c语言 decimal(3,1),mysql decimal(3,1));
4.desc xscj;
5.insert into xscj values('20210101001','程建红','vip16','女','2003-02-16',87,89,90);
insert into xscj values('20210101002','邓志杰','vip17','男','2002-12-05',79,80,69);
insert into xscj values('20210101003','甘志强','vip17','男','2003-05-23',90,78,65);
insert into xscj values('20210101004','谭诗琴','vip16','女','2003-01-24',66,84,90);
insert into xscj values('20210101005','张飞','vip16','男','2002-12-04',94,90,90);
insert into xscj values('20210101006','赖建东','vip16','男','2003-11-29',76,88,86);
insert into xscj values('20210101007','郑靠天','vip16','男','2002-08-19',94,90,88);
insert into xscj values('20210101008','张国斌','vip17','男','2003-10-25',80,81,88);
insert into xscj values('20210101009','李桥冰','vip17','女','2003-07-18',86,80,87);
insert into xscj values('20210101010','杨思琦','vip16','女','2002-08-09',82,80,84);
6.select * from xscj;
COUNT()函数
count()函数用来统计记录的条数,其语法格式如下所示:
SELECT COUNT(*)FROM 表名
使用上面的语法格式可以求出表中有多少条记录,即符合条件的有多少人。如下例所示:
select count(*) from xcsj;
select count(*)from xscj where 性别='男';
select count(*)from xscj where 性别='女';
sum()是求和函数
用于求出表中符合条件的某个字段这一列的值的求和,其语法格式如下:
SELECT SUM(字段名)FROM表名:
select sum(mysql) from xscj;
select sum(mysql) from xscj where 性别='男';
select sum(mysql) from xscj where 性别='女';
AVG()函数
用于求出某个字段所有的平均值,其语法格式如下
SELECT AVG(字段名)FROM student;
select avg(mysql) from xscj;
select avg(mysql) from xscj where 性别='男';
select avg(mysql) from xscj where 性别='女';
MAX()函数
是求最大值的函数,用于求出某个字段的最大值,其语法格式如下所示:
SELECT MAX(grade) FROM student;
如下例所示。
select max(java语言) from xscj;
select max(java语言) from xscj where 性别='男';
select max(java语言) from xscj where 性别='女';
MIN()函数
是求最小值的函数,用于求出某个字段的最大值,其语法格式如下所示:
SELECT MIN(grade) FROM student;
如下例所示。
select min(java语言) from xscj;
select min(java语言) from xscj where 性别='男';
select min(java语言) from xscj where 性别='女';
二、对查询结果进行排序
使用ORDER BY对查询结果进行排序,其语法格式如下所示:
SELECT 字段名1,字段名2,……
FROM 表名
ORDER BY 字段名1 [ASC | DESC],字段名2 [ASC | DESC]……
举例:
select * from xscj;
select * from xscj order by mysql;
select * from xscj order by mysql,java语言;
select * from xscj order by mysql asc;
select * from xscj order by mysql desc;
需要注意的是,在按照指定字段进行升序排列时,如果某条记录的字段值为NULL,则这条记录会在第一条显示,这是因为NULL值可以被认为是最小值。
三、对查询结果进行分组
使用GROUP BY对字段值进行分组查询,其语法格式如下所示:
SELECT 字段名1,字段名2,……
FROM 表名
GROUP BY 字段名1,字段名2,……[HAVING 条件表达式];
举例:
select * from xscj group by 班级; #提示没有意义
select 班级 from xscj group by 班级;
select 性别 from xscj group by 性别;
GROUP BY常和聚合函数一起使用,返回用户需要的数据,看下列的例子:
select 班级,count(班级) from xscj group by 班级;
select 班级,group_concat(姓名) from xscj group by 班级;
又如:
select 性别,count(性别) from xscj group by 性别;
select 性别,group_concat(姓名) from xscj group by 性别;