Postgresql distinct on 1 column with highest possible second column

mzsu5hc0  于 2023-04-11  发布在  PostgreSQL
关注(0)|答案(2)|浏览(138)

我在PostgreSQL中有一个表,有两列:

  • 身份证
  • 员工ID

在这个表中,有一些记录具有重复的employee_id,但始终是唯一的id。我需要获得唯一的employee_id,并具有最高的id。我想实现的是基于employee_id的不同查询,并具有最高的id。因此,如果有2个记录具有相同的employee_id,但其中一个的id比另一个高,那么我想获得具有更高id的那个。
已尝试此查询:

SELECT DISTINCT ON (employee_id) id, employee_id
FROM table_name
ORDER BY id DESC;

但首先order by需要有相同的值,distinct on,其次我不会在我的情况下工作,因为它会在select distinct之后对记录进行排序。
第二次尝试也没有得到正确的记录:

SELECT *
FROM
(
    SELECT DISTINCT ON (employee_id) *
    FROM
    (
        SELECT *
        FROM table_name
        ORDER BY id DESC
    ) AS sub
) AS sub2
ORDER BY id DESC;

我将非常感谢帮助和提示。

xqk2d5yq

xqk2d5yq1#

SELECT
   DISTINCT ON (employee_id) employee_id,
   id
FROM
   table_name
ORDER BY
   employee_id, id DESC;
xzabzqsa

xzabzqsa2#

你可以使用groub bymax()来实现:

select employee_id, max(id)
from table_name
group by employee_id
order by employee_id;

相关问题