开始之前,先考虑一个问题:如何计算各科的平均成绩并且得出平均成绩大于等于80分的课程并降序排列?
遇到业务问题,先不要着急,捋一下思路:
要计算每一门课程的平均成绩,然后根据得出的结果,进行大于等于80分的条件查询,对查询结果进行降序排列。
这么看来,就可以解决这个业务问题了
接下来,我们需要解决的问题就是,每一步骤如何去解。此四张表表为以下实例所用
目录汇总函数
分组
对分组结果指定条件
排序
用SQL解决业务问题分析思路
一开始的问题中,要求我们计算平均成绩,平均成绩用SQL怎么来计算?这便是我们这节的内容了,这里不仅仅介绍平均值,还有计数、求和、最大值、最小值的汇总函数的介绍。
先看一下本节导图:
1)count() 求某列的行数
很容易理解,count(列名)就是求某列的行数,值得注意的一点是该列不会计算空值的行数。举例:
-- 查询共有几名教师SELECT COUNT(教师姓名) FROM teacher;
-- 查询教师表共有多少行
SELECT COUNT(*) FROM teacher;
如果列中有重复值,我们计数不想计算重复值,怎么办呢?我们可以使用distinct来解决:
-- 查询成绩表里共有几个学生的成绩
SELECT COUNT(DISTINCT 学号) FR