汇总函数
(1)count(列名):求某列的行数,不包含空值。
(2)sum(列名):对某列数据进行求和,只能对数值类型的列计算。
(3)avg(列名):求某列数据的平均值,只能对数值类型的列的计算。
(4)max(列名):求某列数据的最大值。
(5)min(列名):求某列数据的最小值。
注意:
(1)如果计算全部的行数会包含空值null.
(2)如果汇总时不想计算重复值,在汇总函数前加distinct,先删除重复值后计算。
练习:
(1)查询课程编号为0002的总成绩
执行结果如下图所示:
(2)查询选了课程的学生人数
执行结果如下图所示:
分析方法
加入分组后,SQL的执行顺序为:
1.from:从哪张表中查询数据
2.where:查询条件
3.group by :分组
4.select:查询结果
练习
1.查询各科成绩最高和最低的分
执行结果如下图所示:
2.查询每门课程被选修的学生数
执行结果如下图所示:
3.查询男生,女生人数
执行结果如下图所示:
3.对分组结果指定条件
加入了having子句,我们新的SQL执行顺序为:
1.from:从哪张表中查询数据
2.where:查询条件
3.group by :分组
4.having:对分组结果指定查询条件
5.select:查询结果
练习
1.查询平均成绩大于60分学生的学号和平均成绩
执行结果如下图所示:
2.查询至少选修两门课程的学生学号
3.查询同名同姓学生名单并统计同名人数
4.用SQL解决业务问题
步骤:
1.翻译成大白话
2.写出分析思路
3.写出对应的SQL子句
练习
1.每门课程的平均成绩
分析思路
1.select 查询结果,每门课程号、平均成绩avg(成绩)
2.from 从哪张表查询数据,score表
3.where 查询条件,无
4.group by 分组,以每个课程号作为分组条件
5.having 对分组结果指定条件,平均成绩>=80
写出sql子句
select 课程号,avg(成绩)
from score
group by 课程号
having avg(成绩)>=80;
执行结果如下图所示:
5.对查询结果排序
order by 子句
(1)降序desc:从大到小
(2)升序asc:从小到大,默认排序
注意:
1.我们也可以指定多个排序列名如:order by <列名1>asc,<列名2>desc;
2.对于含有空值的列排序时,空值会在查询结果开头显示,方便查询表格中空值的情况
limit子句
作用:从查询结果中取出指定行
加入以上两种子句后,SQL执行顺序为:
1.from:从哪张表中查询数据
2.where:查询条件
3.group by :分组
4.having:对分组结果指定查询条件
5.select:查询结果
6.order by:对查询结果排序
7.limit:从查询结果中取出指定行
练习
1.查询不及格的课程并按照课程号从大到小排序
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。