题解 | #考试分数(三)# 不使用窗口函数
考试分数(三)
http://www.nowcoder.com/practice/b83f8b0e7e934d95a56c24f047260d91
低版本mysql并不支持窗口函数,解决办法:
1、使用自连接,按人找出比自己高的分数,对于前2名,去重后的个数应该为 0 或者 1,即 < 2
2、将上述筛选的结果与 language 表关联,并对结果排序
最终SQL
select g1.id id, name, g1.score score
from grade g1
left join grade g2
on g1.language_id = g2.language_id and g1.score < g2.score
left join language l
on g1.language_id = l.id
group by g1.id
having count(distinct g2.score) < 2
order by name, score desc;