ITPub博客

首页 > 数据库 > > SQL 经典50题练习之41-50题

SQL 经典50题练习之41-50题

作者:浪花小雨滴 时间:2020-05-14 15:45:56 0 删除 编辑


QL语句可能因数据库系统不同而存在少许差异。


测试数据请参照第一章节,各表查询结果如下图:

练习题目

41. 查询学过“01”并且也学过编号“02”课程的同学的学号、姓名

42. 查询学生的总成绩并进行排名

43. 查询不同老师所教不同课程平均分从高到低显示 

44. 查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

45. 查询学生平均成绩及其名次 

46. 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一

47. 查询本周过生日的学生

48. 查询下周过生日的学生

49. 查询本月过生日的学生

50. 查询下月过生日的学生



参考答案

--------------------------------------------------------

--41. 查询学过“01”并且也学过编号“02”课程的同学的学号、姓名

select Student.SId,Student.Sname from Student,SC where Student.SId=SC.SId and SC.CId='01'and exists( Select * from SC as SC_2 where SC_2.SId=SC.SId and SC_2.CId='02')

输出结果


--42. 查询学生的总成绩并进行排名

select sid,sum(score) as 总成绩,rank()over(order by sum(score) desc) as 总成绩排名 from sc group by SId

输出结果


--43. 查询不同老师所教不同课程平均分从高到低显示 

select t1.*,t2.avgs from Course t1 ,(select cid,avg(score) as avgs  from SC group by cid ) t2where t1.CId=t2.CId order by t2.avgs desc

输出结果


--44. 查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

select t1.*,t2.CId,t2.score,t2.成绩排名
from student t1,(select sid, CId,score, dense_rank()over(partition by cid order by score desc) as 成绩排名 from SC)t2 where t1.SId=t2.SIdand t2.成绩排名 in(2,3)

输出结果


--45. 查询学生平均成绩及其名次 

select SId,avg(score) as 平均成绩,ROW_NUMBER()over(order by avg(score) desc) as 名次 from SC group by SId

 输出结果

--46. 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一

select student.SId,student.Sname,TIMESTAMPDIFF(YEAR,student.Sage,CURDATE()) as 学生年龄from student

此题为mysql语句


--47. 查询本周过生日的学生

select *from student where datepart(WEEK,getdate())=datepart(WEEK,Student.Sage)

--48. 查询下周过生日的学生

select *from student where datepart(WEEK,getdate())+1=datepart(WEEK,Student.Sage)


--49. 查询本月过生日的学生

select * from Studentwhere MONTH(student.sage)=MONTH(getdate())


--50. 查询下月过生日的学生

select * from Studentwhere MONTH(student.sage)=MONTH(getdate())+1



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3144166/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    40019