实习第二天,组里的姐姐让做的题
表结构:
--学生表tblStudent(编号StuId、姓名StuName、年龄StuAge、性别StuSex)
--课程表tblCourse(课程编号CourseId、课程名称CourseName、教师编号TeaId)
--成绩表tblScore(学生编号StuId、课程编号CourseId、成绩Score)
--教师表tblTeacher(教师编号TeaId、姓名TeaName)
问:
编写SQL语句,查询每门功成绩最好的前两名
答:
select row_number() over( partition by sc.Courseid order by sc.Score desc) rank st.stuname ,co.CourseName from tblScore sc left join tblStudent st on sc.Stuid=st.Stuid left join tblCourse co on oc.CourseId=sc.CourseId where rank=1 or rank=2;
涉及知识点:窗口函数
拓展知识点:row_number ,rank ,dense_rank 的区别