获得第二个最高最高分数和名称

时间:2019-01-30 04:54:12

标签: sql

考虑一个包含两列的表:markname

我需要获取第二高的值以及第二高的名称。

3 个答案:

答案 0 :(得分:1)

您可以在SQL中使用ROW_NUMBER(),RANK(),DENSE_RANK()函数。 但是在这种情况下,您必须使用DENSE_RANK(),因为在某些情况下,可能会有2个或更多的学生获得最高分,在这种情况下,您将不能使用ROW_NUMBER()或RANK()。

详细了解此功能click here

SELECT * FROM (
    SELECT name, mark, DENSE_RANK() over (order by mark desc) RankNo 
    FROM tablename
    ) AS Result 
WHERE Result.RankNo = 2

答案 1 :(得分:0)

SELECT * 
FROM   (SELECT name, 
               mark, 
               Row_number() over(ORDER BY mark DESC) AS rownums 
        FROM   employees) 
WHERE  rownums = 2;

答案 2 :(得分:-1)

SELECT name,mark FROM table ORDER BY mark desc limit 1,1

此代码按mark降序对所有记录进行排序。 limit 1,1跳过第一个结果(第一个1 =第一个记录),然后返回下一个结果(第二个1 =第二个记录)。

相关问题