如何选择动态排名值?

时间:2019-04-28 19:42:26

标签: sql postgresql postgresql-9.6

我有一张公司表和另一位雇员,以及他们加入公司的日期。我能够获得每个公司as shown here的5名最新雇员。现在,我只想显示公司A的排名<= 3,公司B的排名<= 8和公司C的数量不受限制。3、8和-1作为“最大”列存储在公司表中。在这种情况下,如何动态选择最大值?

1 个答案:

答案 0 :(得分:0)

您基本上想要:

SELECT *  -- choose the columns you want here
FROM (SELECT e.*, c.max,
             row_number() over (partition by company order by joined desc) as rank
      FROM employees e JOIN
           companies c
           on e.company = c.pk
     ) e
WHERE rank < max or max = -1