一、大纲
二、实战
首先建立school数据库,下面有四张表student,teacher,score,course
1.使用count函数统计列数据个数
2.计算score表中,成绩的总分
3.求score表中的成绩平均值,使用avg函数
4.计算score表中,成绩的最大值,最小值
5.如果需要删除重复值再统计,可以使用distinct
小试牛刀1:
(1)查询课程编号为“0002”的总成绩
(2)查询选了课程的学生人数
6.按照性别分组统计学生人数
顺序:先分组-再count函数统计-组合结果
7.查询出生日期在1990年01月01日之后的学生,然后按照性别统计人数
小试牛刀2:
(1)查询各科成绩的最高分和最低分
(2)查询每门课程被选修的学生数
8.按照性别分组统计学生人数,然后取出数据项大于2的分组
小试牛刀3:
(1)查询平均成绩大于60分学生的学号和平均成绩
(2)查询至少选修两门课程的学生学号
(3)查询同名同姓的学生名单并统计同名人数
9.如何计算各科的平均成绩:1先按照学科将成绩分组,2计算每一组的平均值
10.如何计算每门课程的平均成绩,且平均成绩大于等于80分
step1:计算每门课程的平均成绩,找出大于等于80的平均成绩
step2:先按照课程号分组,对每个分组求平均成绩,然后在分组中选出>=80的分组和平均成绩
step3:select 课程号,avg(成绩)
from score
group by 课程号
having avg(成绩)>=80;
小试牛刀4:
(1)查询不及格的课程并按照课程号从大到小排列
step2:在score表中找到不及格的课程,然后按照课程号从大到小排列
step3:select 课程号,成绩
from score
where 成绩<60
order by 课程号desc;
(2)查询每门课程的平均成绩,结果按照平均成绩升序,平均成绩相同时按照课程号降序排列
step2:先按照课程分组,求出每门课的平均成绩,然后按照平均成绩升序,课程号降序
step3:
select 课程号,avg(成绩)
from score
group by 课程号
order by avg(成绩) asc ,课程号 desc;
拓展练习SQLzoo
https://sqlzoo.net/wiki/SELECT_from_Nobel_Tutorial/zhsqlzoo.net练习题结果截图: