更新SQL经典50题的第21-30题,这10题都比较简单,具体程序和运行结果如下所示:
- 查询男生、女生人数;
select ssex,count(sid) 人数
from Student
group by ssex;
- 查询名字中含有「风」字的学生信息;
select *
from Student
where sname like '%风%';
- 查询同名学生名单,并统计同名人数;
select sname,count(sid) 人数
from Student
group by sname
having count(sid)>1;
- 查询 1990 年出生的学生名单;
select *
from Student
where year(sage)=1990;
- 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列;
select c.cid,c.cname,avg(score) 平均成绩
from Course c left join SC
on c.cid=SC.cid
group by c.cid,c.cname
order by 平均成绩 desc,cid asc;
- 查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩;
select s.sid,s.sname,avg(score) 平均成绩
from Student s left join SC
on s.sid=SC.sid
group by s.sid,s.sname
having avg(score)>=85;
- 查询课程名称为「数学」,且分数低于 60 的学生姓名和分数;
select s.sname,SC.score
from Student s,SC,Course c
where s.sid=SC.sid and c.cid=SC.cid
and c.cname='数学' and SC.score<60;
- 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况);
select s.sid,s.sname,c.cname,SC.score
from Student s left join SC on s.sid=SC.sid
left join Course c on SC.cid=c.cid;
29. 查询任何一门课程成绩在 70 分以上的学生姓名、课程名称和分数;
select s.sname,c.cname,SC.score
from SC,Student s,Course c
where SC.sid=s.sid and SC.cid=c.cid
and s.sid in(
select sid from SC
group by sid
having max(score)>70);
- 查询存在不及格的课程;
select c.cid,c.cname
from Course c left join SC
on c.cid=SC.cid
group by c.cid,c.cname
having min(score)<60;