一、題目
1.與“張三”同鄉的男生姓名
select * from student where snativeplace=(select snativeplace from student where sname='張三') and ssex='男'
2.選修了趙露老師所講課程的學生人數
select count(*) from mark where cid in(select cid from course where tid=(select tid from teacher where tname='趙露')) group by cid select count(distinct sid) from mark where cid in(select cid from course where tid=(select tid from teacher where tname='趙露'))
3.查詢沒學過“王”姓老師課的同學的學號、姓名
select * from student where sid not in(select sid from mark where cid in( select cid from course where tid in(select tid from teacher where tname like '王%')))
4.數學”課程得最高分的學生姓名、性別
select * from student where sid in( select sid from mark where cid=( select cid from course where cname='數學') and cmark>= all( select cmark from mark where cid=(select cid from course where cname='數學') ))
5.統計每門課程的平均成績,並按照成績降序排序
select *from(select (select cname from course where cid=m.cid), avg(cmark) cavg from mark m group by cid )order by cavg desc select * from (select avg(cmark) cavr from mark group by cid)order by cavg desc
6.子查詢實現查詢‘3-2班’"張立"同學的"英語"成績
select cmark 成績 from mark where sid=( select sid from student where sname='張三'and sclass='2班') and cid =(select cid from course where cname='英語')
7.查詢所在班級和該班內學生的年齡之和,對該班級中每個人的年齡進行比對,(要求大於20歲的人參與統計)
select sclass ,sum(sage) from student where sage>=20 group by sclass
8.查詢所在班級和該班內學生的年齡之和,(要求該班級中每個人的年齡都大於20歲)
select sclass ,sum(sage) from student group by sclass having min(sage)>20 select sclass ,sum(sage) from student where sclass not in( select sclass from student where sage<20 group by sclass) group by sclass
9.用子查詢實現查詢選修“高等數學”課的全部學生的高等數學總成績
select sum(cmark) from mark where cid =(select cid from course where cname='數學')
10.用子查詢實現查詢選修“高等數學”課的全部學生的所有課程總成績*/
select sum(cmark) from mark where sid in(select sid from mark where cid =(select cid from course where cname='數學'))
11.請用兩種方法實現:查找所有成績都在68分以上的學生姓名*/
select sid,sname from student where sid in ( select sid from mark group by sid having min(cmark)>=68) select sid,sname from student s where exists ( select sid from mark m where s.sid=m.sid group by sid having min(cmark)>=68)
12.查找至少2門成績在80分以上的學生姓名
select sname from student where sid in( select sid from mark where cmark >=80 group by sid having count(*)>=2 )
13.查詢至少有一門課與張三同學所學相同的同學的學號和姓名
select sid,sname from student where sid in( select sid from mark where cid in ( select cid from mark where sid in ( select sid from student where sname='張三')))
14.沒有選修“數學”課的學生的姓名*/
select sname from student where sid in ( select sid from mark where sid not in( select sid from mark where cid in( select cid from course where cname='數學' ) ) )
15.查詢個人總成績小於平均總成績的學生姓名
step1、計算出平均總分 step1.1計算出個人總分表 select sid,sum(cmark) smk from mark group by sid step1.2對總分表求平均值 select avg(smk) from (step1.1) step2、找出在個人總分表中找出誰的總分低於step1 step2.1 select sid from (step1.1)where smk <(step1.2) step2.2 select sname from student where sid in (step2.1)