题目:请你找出每个岗位分数排名前2名的用户,得到的结果先按照language的name升序排序,

再按照积分降序排序,最后按照grade的id升序排序。

思路:表1:每个部门的分数为第二名的用户,表2:整体的用户;

结果条件:表2所有的分数小于等于表1第二名分数的用户

SELECT g1.id, l.name, g1.score FROM grade AS g1 INNER JOIN language AS l ON g1.language_id = l.id WHERE ( SELECT COUNT(DISTINCT g2.score) FROM grade AS g2 WHERE g1.score <= g2.score AND g1.language_id = g2.language_id ) <= 2 ORDER BY l.name, g1.score DESC, g1.id