MySQL查询习题
查询信息管理系职称为教授或副教授的男教师信息,显示姓名,职称信息。
select t.TName 名字,t.TRank 职称
from teacher t join department d
on (d.DName='信息管理系' AND d.DId=t.TDept)
having (t.TRank IN ('教授','副教授'));
查询'JAVA程序设计'课程日期最早的3名同学的姓名和学号信息,如果日期相同则按照姓名拼音先后顺序。
select s.SName 姓名,s.SId 学号,r.RDate 课程日期
from student s join register r
on s.SId=r.SId
where CId='C01'
order by r.RDate,s.SName asc limit 0,3;
查询每门课程的最低分的同学的姓名,学号,成绩以及课程编号信息。
select s.SName 姓名,s.SId 学号,r.Score 成绩,r.CId 课程编号
from register r inner join student s
on r.SId=s.SId
where r.Score=(select min(r1.Score)
from register r1
where r1.CId=r.CId
group by r1.CID)
order by r.CID;
查询每门课程的最低分的同学的姓名,学号,成绩以及课程名称信息。
select s.SName 姓名,s.SId 学号,r.Score 成绩,https://www.360docs.net/doc/9d18869434.html,ame 课程名称
from register r inner join student s on r.SId=s.SId
join course c on c.CId=r.CId
where r.Score=(select min(r1.Score)
from register r1
where r1.CId=r.CId
group by r1.CID);
查询每个学生各门课程的平均成绩,显示学生学号,姓名,平均成绩以及参加考试的门数,没有参加任何课程学习的学生也予显示。
select s.SName 姓名,s.SId 学号,round(avg(r.Score),0) 平均成绩,count(r.SId) 参加考试的门数
from register r right join student s
on r.SId=s.SId
group by s.SName;
查询每门课程的平均分,显示课程名称,平均成绩信息,并按照平均成绩倒序排列。
select round(avg(r.Score),1) 平均成绩,https://www.360docs.net/doc/9d18869434.html,ame 课程名称
from register r right join course c
on r.CId=c.CId
group by https://www.360docs.net/doc/9d18869434.html,ame
order by 平均成绩desc;
查询每门课程的平均分,显示课程名称,平均成绩信息,只显示平均成绩高于75分以上的课程,并按照平均成绩倒序排列。
select round(avg(r.Score),1) 平均成绩,https://www.360docs.net/doc/9d18869434.html,ame 课程名称
from register r right join course c
on r.CId=c.CId
group by https://www.360docs.net/doc/9d18869434.html,ame
HAVING round(avg(r.Score),1)>'75'
order by 平均成绩desc;
查询每个姓氏的学生人数,显示姓氏,人数信息(假设没有复姓)。
select substr(SName,1,1) 姓氏,count(SName) 人数
from student
group by 姓氏;
查询每个月份出生的学生人数,显示月份,出生人数信息,即便没有学生出生的月份也要显示。
select count(SId) 人数,ifnull(substr(SBirth,6,2),0) 月份
from student
group by substr(SBirth,6,2)
order by 月份;