按最新版本的某些列查找

Find by some columns with latest version

有table个赞:

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

例如:

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

我需要select由用户获取不同类型和最新版本的工具。

喜欢用户 1:

type  | user  | version
type1 | user1 | 2    
type2 | user1 | 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       |