|
|
发表于 2022-12-21 17:05:35
|
显示全部楼层
19题,由于mysql 8.0才有开窗函数
以下答案基于mysql 5.7
-----------------------------------------------------------------------
select s_id,a.c_id,c_name,s_score,rank from (
select s_id,c_id,s_score,
case
when c_id = @cid then
if(@prevRank = s_score,@curRank,@curRank := @curRank + 1)
else
@curRank := 1
end as rank,
@cid := c_id,
@prevRank := s_score
from score, (select @cid:=null,@prevRank:=null,@curRank:=0) p
order by c_id,s_score desc) a left join course on a.c_id=course.c_id
----------------------------------------------------------------------- |
|