在某些列中找到最新版本

问题描述 投票:0回答:1

有这样的表:

TOOL
---------------
type
user
version.

例如:

type  | user  | version
---------------------
type1 | user1 | 1
type1 | user1 | 2
type2 | user1 | 1
type3 | user2 | 1

我需要按用户选择并获得具有不同类型和最新版本的工具。

类似于用户1:

type  | user  | version
type1 | user1 | 2    
type2 | user1 | 1

如何做?

sql postgresql greatest-n-per-group
1个回答
1
投票

您可以使用row_number(),这里是demo

select
    type,
    user,
    version
from
(
    select
        *,
        row_number() over (partition by type, user order by version desc) as rnk
    from tool
) t
where rnk = 1

输出:

| type  | user  | version |
| ----- | ----- | ------- |
| type1 | user1 | 2       |
| type2 | user1 | 1       |
| type3 | user2 | 1       |
© www.soinside.com 2019 - 2024. All rights reserved.