测试必看:常见的SQL查询案例(带答案)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1、查询名字中含有"金"字的学生信息
select * from 学生表 where Sname like ‘%金%’

2、查询并统计同龄学生人数
select Sage,count(Sid)from 学生表 group by Sage

3、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列
select Cid,avg(score) from 成绩 group by cid order by avg(Score),cid desc

4、按平均成绩从高到低显示所有学生的平均成绩
select Sid,avg(Score) from 成绩 group by Sid order by avg(Score) desc

5、查询各科成绩最高分、最低分和平均分:以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分
select sc.Cid 课程 ID, c.Cname 课程名, max(sc.Score) 最高分,min(sc.Score) 最低分,avg(sc.Score) 平均分 from 成绩表 sc left join 课程表 c on sc.cid=c.cid
group by sc.cid

6、按各科平均成绩从低到高顺序排序
select Cid, avg(Score) from 成绩表 group by Cid order by avg(Score) desc

7、查询学生的总成绩并进行排名
select Sid 学号,sum(Score) 总分 from 成绩表 group by Sid order by sum(Score) desc

8、检索至少选修两门课程的学生学号
select Sid from 成绩表 group by Sid having count(Cid) > 1;

9、查询每门课程被选修的学生数
select Cid,count(Cid) from 成绩表 group by Cid

10、查询不及格的课程,并按课程号从大到小排列
select * from 成绩表 group by Cid having Score < 60 order by Cid desc

11、查询出只选修了一门课程的全部学生的学号和姓名
select Sid,Sname from 学生表 where Sid in(select Sid from 成绩表 group by Sid having count(Sid) = 1)

12、查询课程编号为"01"且课程成绩在 60 分以上的学生的学号和姓名
select Sid,Sname from 学生表 where Sid in(select Sid from 成绩表 where Cid = 'c01’and Score>=60)

13、查询“01”课程比“02”课程成绩高的所有学生的学号
select sc1.sid from 成绩表 sc1, 成绩表 sc2 where sc1.sid = sc2.sid and sc1.cid = ‘c01’ and sc2.cid = ‘c02’ and sc1.Score > sc2.Score

14、查询平均成绩大于 60 分的同学的学号和平均成绩
select Sid, avg(Score) from 成绩表 group by Sid having avg(Score) > 60

15、查询姓“李”的老师的个数
select count(*) from 老师表 where Tname like ‘李%’

16、查询没学过“何倩文”老师课的同学的学号、姓名
select Sid, Sname from 学生表 where Sid not in(select Sid from 成绩表 where Cid =(select Cid from 课程表 where Cteacher = ‘何倩文’))

17、查询学过编号“01”并且也学过编号“02”课程的同学的学号、姓名
select Sid,Sname from 学生 where Sid in(select sc1.Sid from 成绩 sc1,成绩 sc2 wheresc1.Sid=sc2.Sidand sc1.Cid = 'c01’and sc2.Cid = ‘c02’)

18、查询没学过"李征辉"老师讲授的任一门课程的学生姓名
select Sid,Sname from 学生 where Sid not in(select distinct(Sid) from 成绩 where Cid in (select Cid from 课程 where Cteacher = ‘李争辉’))

19、查询所有同学的学号、姓名、选课数、总成绩
select sc.Sid, s.Sname, count(sc.Cid), sum(Score) from 成绩 sc left join 学生 s on sc.Sid = s.Sid group by sc.Sid

20、查询选修“李征辉”老师所授课程的学生中,成绩最高的学生姓名及其成绩
select s.Sname, max(sc.Score) from 学生表 s left join 成绩表 sc on s.Sid=sc.Sid where sc.Cid in (select Cid from 课程表 where Cteacher = ‘李征辉’)

21、查询不同老师所教不同课程平均分从高到低显示
select c.Cteacher,c.Cname, avg(sc.Cscore) from 成绩表 sc left join 课程表 c on sc.Cid=c.Cid group by sc.Cid

22、检索"01"课程分数小于 60,按分数降序排列的学生信息
select * from 学生表 s left join 成绩表 sc on s.Sid=sc.Sid where sc.Score < 60 and sc.Sid = 'c01’order by sc.Score desc

23、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
select s.Sid, s.Sname, avg(sc.Score) from 学生 s left join 成绩 sc on s.Sid = sc.Sid where s.Sid in(select Sid from 成绩 sc where Score < 60 group by Sid having count(Sid) > 2)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值