本文已参与「新人创作礼」活动,一起开启掘金创作之路。
提示:以下是本篇文章正文内容,下面案例可供参考
--5、查询单表
--(1)统计所有班级的平均综合成绩、最高综合成绩和最低综合成绩之差
select * from Score
select s2.class_id 班级, avg(result) 平均综合成绩,MAX(result) 最高综合成绩,min(result) 最低综合成绩
from Score s join Student s2 on s.stu_id=s2.id group by class_id
--(2)不采用avg()计算所有班级的平均综合成绩
select s2.class_id 班级id,(result)/count(*) 平均综合成绩 from Score s join Student s2 on
s.stu_id=s2.id group by class_id
--(3)统计电商二班学生个数和总综合成绩
select count(*) 学生个数,sum(result) 总综合成绩 from Score s join Student s2 on s.stu_id=s2.id
group by class_id having class_id=2
--(5)按班级id分组统计学生数量和平均项目成绩,并按平均项目成绩升序显示
select count(*) 学生数量,avg(project) 平均项目成绩 from Score s join Student s2 on s.stu_id=s2.id
group by class_id order by avg(project) desc
--(6)统计每个班级的人数,并按人数升序显示班级id,班级人数
select s2.class_id 班级id,count(*) 班级人数 from Score s join Student s2 on s.stu_id=s2.id group by
class_id order by count(*)
--(7)查询每个地址的人数
select [address] 地址,count(*) 人数 from Student group by [address]
--(8)统计每个班级的姓张同学的平时成绩最高分
select s.daily 平时成绩 from Score s join Student s2 on s.stu_id=s2.id group by class_id,s2.name
having s2.name like '张%' order by s.daily desc
--(9)按照班级id和地址分组统计人数和平均综合成绩,并按平均综合成绩升序显示
select s2.class_id 班级id,[address] 地址,count(*) 人数,AVG(result) 平均综合成绩 from Score s
join Student s2 on s.stu_id=s2.id group by class_id,[address] order by AVG(result)
-- (10)根据地址分组统计人数和平均综合成绩,并按平均综合成绩升序显示平均综合成绩高于85的信息
select [address] 地址,count(*) 人数,AVG(result) 平均综合成绩 from Score s join Student s2 on
s.stu_id=s2.id group by [address] having AVG(result)>85 order by AVG(result)
--(11)根据班级id分组统计最高平时成绩,昆明区域的同学不在统计范围内,并按最高平时成绩降序显示最高平时成绩高于80的信息
select s2.class_id 班级id,max(daily) 最高平时成绩 from Score s join Student s2 on s.stu_id=s2.id
group by class_id,[address] having [address]<> '云南省昆明市'and max(daily)>80 order by max(daily) desc
--(12) 统计班级人数大于4的班级id和班级人数,并按人数降序显示
select s2.class_id 班级id,count(*) 班级人数 from Score s join Student s2 on s.stu_id=s2.id
group by class_id having count(*)>4 order by count(*) desc
--6、查询多表
--(1)查询自己的信息,显示学号,姓名,性别,电话,地址,出生日期,民族,家长电话1,家长电话2
select [no] 学号,name 姓名,sex 性别,phone 电话,[address] 地址,birthdady 出生日期,
nation 民族,parent_phone_1 家长电话1,parent_phone_2 家长电话2 from Student where id=1
--(2)查询自己和所在班级的信息,显示班级,学号,姓名,性别,电话,地址,出生日期,民族,家长电话1,家长电话2
select c.name 班级, no 学号,s.name 姓名,sex 性别,phone 电话,address 地址,birthdady 出生日期,
nation 民族,parent_phone_1 家长电话1,parent_phone_2 家长电话2 from Student s join Class c on s.class_id=c.id where s.id=1
--(3)查询所有老师的带班信息,显示,老师姓名,班级,班级人数
select t.name 老师姓名,c.name 班级,count(s.class_id) 班级人数 from Student s,Teacher t,Class c where
t.teacher_id=c.teacher_id and c.id=s.class_id group by t.name,c.name
--(4)查询班级信息,显示班级名称、老师姓名、班主任姓名,班级人数
select c.name 班级,t2.name 老师姓名,t.name 班主任姓名,count(s.class_id) 班级人数 from Teacher t join Class c
on t.teacher_id=c.class_teacher_id join Teacher t2 on t2.teacher_id=c.teacher_id join Student s on c.id=s.class_id group by
c.name,t.name,t2.name
--(5)查询我们班的成绩信息,要求显示,姓名,卷面成绩,项目成绩,平时成绩,综合成绩,按综合成绩降序排序
select name 姓名,exam 卷面成绩,project 项目成绩,daily 平时成绩,result 综合成绩 from Score s join Student s2 on s.stu_id=s2.id where s2.class_id=1 order by result desc
--(6)查询每个老师带了多少学生,显示老师姓名,学生数
select t.name 讲师姓名,count(*) 学生数 from Student s left join Class c on c.id=s.class_id left join Teacher t on c.teacher_id=t.teacher_id group by
t.name
--(7)查询各班H5卷面成绩,显示班级、平均分,最高分,最低分
select c.name 班级, avg(exam) 平均分,max(exam) 最高分,min(exam) 最低分 from class c ,Score s,student s1,Subject s2 where
c.id=s1.class_id and s1.id=s.sub_id and s2.id=s.sub_id and s2.name='HTML' group by c.name,s2.name
--(8)查询你自己各科成绩,显示,姓名、卷面成绩,项目成绩,平时成绩,综合成绩
select s.name 姓名,exam 卷面成绩,project 项目成绩,daily 平时成绩,result 综合成绩 from Student s,Score s1 where s.id=stu_id
group by s.name,exam,project,daily ,result having s.name='杨有山'
--(9)查询各地州的学生人数,显示,地址州,学生人数,按人数排序
select address 地址,count(*) 学生人数 from Student group by address order by count(*) desc
--(10)查询自己所有成绩的平均分,显示姓名 卷面成绩,项目成绩,平时成绩,综合成绩
select Student.name 姓名,avg(exam) 卷面成绩,avg(project) 项目成绩,avg(daily) 平时成绩,avg(result) 综合成绩 from Student join Score on Student.id=stu_id
group by Student.name having Student.name='杨有山'
--(11)查询各地州的学生平均成绩,显示,地址州,学生人数,平均卷面成绩,平均项目成绩,平均平时成绩,平均综合成绩,按综合成绩排序从高到低排序
select address 地址,count(*) 学生人数,avg(exam) 卷面成绩,avg(project) 项目成绩,avg(daily) 平时成绩,avg(result) 综合成绩 from student s join Score s1 on
s.id=s1.stu_id group by address order by 综合成绩 desc
--(12)查询所有学生的成绩信息,显示,学生姓名,班级,老师,班主任,课程名,卷面成绩,项目成绩,平时成绩,综合成绩,按卷面成绩排序从高到低排序
select s.name 学生姓名,c.name 班级,t2.name 老师,t.name 班主任 ,s2.name 课程名称,exam 卷面成绩,project 项目成绩,daily 平时成绩,
result 综合成绩 from Teacher t join Class c on t.teacher_id=c.class_teacher_id join Teacher t2 on t2.teacher_id=c.teacher_id join Student s on c.id=s.class_id join Score s1 on
s.id=s1.stu_id join Subject s2 on s2.id=s1.sub_id group by c.name,t.name,t2.name,s.name,s2.name,exam,project,daily,result order by exam desc
--(13)查询各班级各科目的平均分,显示班级,科目,卷面成绩,项目成绩,平时成绩,综合成绩,选择合适的排序字段和排序方式
select c.name 班级,s2.name 科目,exam 卷面成绩,project 项目成绩,daily 平时成绩,result 综合成绩 from Class c left join Student s on c.id=s.class_id left join Score s1 on s.id=s1.stu_id left join Subject s2 on
s2.id=s1.sub_id group by c.name,s.name,s2.name,exam,project,daily,result order by 卷面成绩 desc
--(14)查询各老师各班各科目的平均分,显示老师,班级,科目,卷面成绩,项目成绩,平时成绩,综合成绩, 选择合适的排序字段和排序方式
select t.name 讲师,c.name 班级,s2.name 科目,exam 卷面成绩,project 项目成绩,daily 平时成绩,result 综合成绩 from Class c left join Teacher t on
t.teacher_id=c.teacher_id left join Student s on c.id=s.class_id left join Score s1 on s.id=s1.stu_id left join Subject s2 on
s2.id=s1.sub_id group by t.name,c.name,s.name,s2.name,exam,project,daily,result,t.id order by 卷面成绩 desc