第一题
select *
from (
select class_id,student_id,name,score_sum,rank() over (partition by class_id order by score_sum desc) rw
from (
select CLASS.class_id,STUDENT.student_id,STUDENT.name,sum(score) score_sum
from CLASS
join CLASS_STUDENT
on CLASS.class_id=CLASS_STUDENT.class_id
join STUDENT
on CLASS_STUDENT.student_id=STUDENT.student_id
join STUDENT_SCORE
on STUDENT.student_id=STUDENT_SCORE.student_id
group by CLASS.class_id,STUDENT.student_id,STUDENT.name
) t
) t2
where rw=1
第二题
select *
from (
select CLASS.class_id,STUDENT.student_id,STUDENT.name,STUDEN_SCORE.course,score,
rank() over (partition by class_id,STUDEN_SCORE.course order by score desc) rw
from CLASS
join CLASS_STUDENT
on CLASS.class_id=CLASS_STUDENT.class_id
join STUDENT
on CLASS_STUDENT.student_id=STUDENT.student_id
join STUDENT_SCORE
on STUDENT.student_id=STUDENT_SCORE.student_id
) t
where rw=1