MySQL高级查询

本文详细介绍了如何在MySQL中使用count(), sum(), avg(), max(), min()等聚合函数进行数据统计,包括基本用法、分组查询和排序,并通过实例演示了性别分组及计数、成绩总和计算等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,聚合函数的应用

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 性别;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值