您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 完美的50sql题目及答案
Student(S#,Sname,Sage,Ssex)学生表Course(C#,Cname,T#)课程表SC(S#,C#,score)成绩表Teacher(T#,Tname)教师表--查询“1”课程比“2”课程成绩高的所有学生的学号selecta.stuidfrom(select*fromt_scswheres.cid=1)a,(select*fromt_scswheres.cid=2)bwherea.stuid=b.stuidanda.scoreb.score;--2、查询平均成绩大于80分的同学的学号和平均成绩;selectstuid,avg(score)fromt_scgroupbystuidhavingavg(score)80;--3、查询所有同学的学号、姓名、选课数、总成绩;selects.stuid,s.name,c.xks,c.zcjfromt_studentsleftouterjoin(selectstuid,count(cid)xks,sum(score)zcjfromt_scgroupbystuid)cons.stuid=c.stuid;selects.stuid,s.name,count(c.cid),sum(c.score)fromt_studentsleftOuterjoint_sccons.stuid=c.stuidgroupbys.stuid,s.name;--4、查询姓“李”的老师的个数;selectcount(tid)fromt_teacherwheretnamelike'李%';--5、查询没学过“叶平”老师课的同学的学号、姓名;selects.stuid,s.namefromt_students,t_coursec,t_teachert,t_scscwheres.stuid=sc.stuidandc.cid=sc.cidandc.teacherid=t.tidandt.tname!='叶平';--6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;selects.stuid,s.namefromt_students,t_sccwherec.cid=1ands.stuid=c.stuidandexists(select*fromt_scscwheresc.stuid=s.stuidandsc.cid=2);--selectStudent.S#,Student.SnamefromStudent,SCwhereStudent.S#=SC.S#andSC.C#='001'andexists(Select*fromSCasSC_2whereSC_2.S#=SC.S#andSC_2.C#='002');--7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;selects.sid,s.snamefromstudents,scscwheres.sid=sc.sidandsc.cidin(selectc.cidfromteachert,coursecwheret.tid=c.tidandt.tname='叶平')groupbys.sid,s.snamehavingcount(sc.cid)=(selectcount(*)fromteachert,coursecwheret.tid=c.tidandt.tname='叶平');--8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;SelectS#,Snamefrom(selectStudent.S#,Student.Sname,score,(selectscorefromSCSC_2whereSC_2.S#=Student.S#andSC_2.C#='002')score2fromStudent,SCwhereStudent.S#=SC.S#andC#='001')S_2wherescore2score;--9、查询所有课程成绩小于60分的同学的学号、姓名;selects.sid,s.snamefromstudents,sccwherec.sid=s.sidgroupbys.sid,s.snamehavingmax(c.score)60selects.stuid,s.namefromt_studentswheres.stuidnotin(selectsc.stuidfromt_students,t_scscwheresc.score=60ands.stuid=sc.stuid);selects.stuid,s.namefromt_studentswherenotexists(select*fromt_scscwheresc.stuid=s.stuidandsc.score=60);--10、查询没有学全所有课的同学的学号、姓名;selects.sidfromscc,coursee,studentswherec.sid=s.sidande.cid=c.sidgroupbys.sidhavingcount(c.cid)(selectcount(*)fromcourse)selects.stuid,s.namefromt_students,t_scscwheres.stuid=sc.stuidgroupbys.stuid,s.namehavingcount(sc.cid)!=(selectcount(cid)fromt_course);selectStudent.S#,Student.SnamefromStudent,SCwhereStudent.S#=SC.S#groupbyStudent.S#,Student.Snamehavingcount(C#)(selectcount(C#)fromCourse);--11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;selectdistincts.sidfromscswheres.cidin(selectc.cidfromsccwheresid=1)ands.sid1selectdistincts.stuid,s.namefromt_students,t_scscwheres.stuid=sc.stuidands.stuid!=1andsc.cidin(selectcidfromt_scwherestuid=1)--selects.stuid,s.namefromt_Students,t_SCscwheres.stuid=SC.Stuidandsc.cidin(selectCidfromt_SCwherestuid='1');--13、把“t_SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;updatet_scsc1setsc1.score=(selectavg(score)fromt_scgroupbycidhavingcidin(selectcidfromt_teachert,t_coursecwheret.tid=c.teacheridandt.tname='叶平')andcid=sc1.cid);--14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;selectsidfromscwheresidin(selectsidfromscgroupbysidhavingcount(*)=(selectcount(*)fromscwheresid=1))andcidin(selectcidfromscwheresid=1);--15、删除学习“叶平”老师课的SC表记录deletet_scwherecidin(selectcidfromt_coursec,t_teachertwherec.teacherid=t.tidandt.tname='Mr.mao');--16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“5”课程的同学学号、2号课的平均成绩;insertintot_scselectstuid,'5'cid,(selectavg(score)fromt_scscwheresc.cid=2)scorefromt_studentswherenotexists(select*fromt_scscwheresc.cid=5andsc.stuid=s.stuid);--17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按--如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分selectt.stuid,max(caset.cnamewhen'Chinese'thent.scoreend)Chinese,max(caset.cnamewhen'Math'thent.scoreend)Math,max(caset.cnamewhen'English'thent.scoreend)English,round(avg(t.score),2)avgscore,count(t.cid)kcsfrom(selects.stuid,s.namestuname,sc.cid,sc.score,c.namecnamefromt_students,t_scsc,t_coursecwheres.stuid=sc.stuidandsc.cid=c.cidandc.namein('Chinese','Math','English'))tgroupbyt.stuidorderbyavgscoredesc;--18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分selectcid,max(score)maxscore,min(score)minscorefromt_scgroupbycidorderbycid;--19、按各科平均成绩从低到高和及格率的百分数从高到低顺序selectsc.cid,(selectnamefromt_coursewherecid=sc.cid)cname,round(avg(sc.score),2)avgscore,round((selectcount(*)fromt_scwherecid=sc.cidandscore=70)/(selectcount(*)fromt_scwherecid=sc.cid)*100,2)||'%'jglfromt_scscgroupbysc.cidorderbyavgscore,jgldesc;--20、查询如下课程平均成绩和及格率的百分数(用1行显示):--企业管理(001),马克思(002),OO&UML(003),数据库(004)select*fromt_scscgroupbysc.cidselectsc.cid,(selectnamefromt_coursewherecid=sc.cid)cname,casesc.cidwhen1thenround(avg(sc.score),2)endchinese_avgscore,casesc.cidwhen1thenround((selectcount(*)fromt_scwherecid=sc.cidandscore=70)/(selectcount(*)fromt_scwherecid=sc.cid)*100,2)||'%'endchinese_jglfromt_scscgroupbysc.cid--21、查询不同老师所教不同课程平均分从高到低显示selectsc.cid,round(avg(sc.score),2)avg_score,c.name,t.tnamefromt_scsc,t_coursec,t_teachertwheresc.cid=c.cidandt.tid=c.teacheridgroupbysc.cid,c.name,t.tnameorderbyavg_scoredesc;--22、查询如下语文成绩第2名到第5名的学生成绩单:--[学生ID],[学生姓名],语文成绩,排名se
本文标题:完美的50sql题目及答案
链接地址:https://www.777doc.com/doc-4497558 .html