分组的第二个最低工资

时间:2016-03-25 14:50:56

标签: mysql sql

我有这样的表格,想象一下,对于ID为

的员工,每月工资是多少

enter image description here

我应该使用什么查询来获得每位员工的第二最低工资? 结果应该像:

id month amount
 1   2     20
 2   2     30
 3   3     15

1 个答案:

答案 0 :(得分:1)

在ANSI标准SQL中,您将使用dense_rank()函数:

select t.*
from (select t.*,
              dense_rank() over (partition by id order by amount desc) as seqnum
      from t
     ) t
where seqnum = 2;

注意:这给出了第二大值。如果首先存在联系,则它给出第二个值。

编辑:

在MySQL中,你可以这样做:

select t.*
from t
where t.amount = (select t2.amount
                  from t t2
                  where t.id = t2.id
                  order by t2.amount desc
                  limit 1, 1
                 );

注意:这会处理不同的关系。即使与第一个相同,它也会给出第二个数量。我不确定你想要什么。