1. AVG函数求平均值
以 teacher 表为例,先查所有 teacher 信息:
SELECT * FROM teacher;
查询结果如下图:
可以使用 AVG() 函数求出全部教师平均年龄:
SELECT AVG(age) FROM teacher;
执行结果如下图:
Tips:如上图所示,AVG(age) 表示对结果集 age 列取平均值 40.6667。 | |
---|---|
2.COUNT函数统计总条数
以 student 表为例,先查看所有 student 信息:
SELECT * FROM student;
查询结果如下图:
可以使用 COUNT() 函数统计全部学生数量:
SELECT COUNT(*) FROM student;
执行结果如下图:
也可以对某一列使用 COUNT() 函数:
SELECT COUNT(id) FROM teacher;
执行结果如下图:
Tips:如上图所示,COUNT(*) 或者 COUNT(id) 表示统计全部结果集条数 10,注意 COUNT() 函数也会对 NULL 值的数据进行统计。
3.SUM函数统计总和
以 teacher 表为例,获取所有教师年龄总和:
SELECT SUM(age) FROM teacher;
执行结果如下图:
Tips:如上图所示,SUM(age) 表示对结果集 age 列求总和 488。
4.MIN函数取最小值
以 teacher 表为例,先查所有 teacher 信息:
SELECT * FROM teacher;
查询结果如下图:
可以使用 MIN() 函数对结果集取年龄最小值的数据:
SELECT MIN(age) FROM teacher;
执行结果如下图:
Tips:如上图所示,MIN(age) 表示对结果集 age 列取最小值 29。
5…MAX函数取最大值
以 student 表为例,先查看所有 student 信息:
SELECT * FROM student;
查询结果如下图:
可以使用 MAX() 函数对结果集取年龄最大值的数据:
SELECT MAX(age) FROM student;
执行结果如下图:
Tips:如上图所示,MAX(age) 表示对结果集 age 列取最大值 23。
6.GROUP BY HAVING
以 student_course、course、student 表内连接查询为例:
SELECT *
FROM
student_course a
INNER JOIN
student b
ON a.student_id=b.id
INNER JOIN course c
ON a.course_id=c.id;
查询结果如下图:
使用 AVG 函数取分组数据平均年龄:
SELECT a.course_id,c.course_name,AVG(age)
FROM
student_course a
INNER JOIN
student b
ON a.student_id=b.id
INNER JOIN course c
ON a.course_id=c.id
GROUP BY a.course_id,c.course_name;
执行结果如下图 :
可以使用 HAVING 对上述结果筛选,例如选出选课学生平均年龄大于 20 的课程数据:
SELECT a.course_id,c.course_name,AVG(age)
FROM
student_course a
INNER JOIN
student b
ON a.student_id=b.id
INNER JOIN course c
ON a.course_id=c.id
GROUP BY a.course_id,c.course_name
HAVING AVG(age) >= 20;
执行结果如下图:
Tips:如上图所示,演示的是使用 AVG() 函数对分组数据进行筛选,同理,可以分别使用 COUNT()、MIN()、MAX()、SUM() 这四种聚合函数取出分组的数据,并且都可以使用 HAVING 后面的条件对分组聚合函数的值进行筛选。 | |
---|---|