选择具有聚合的多个列

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

我有一个表,其中包含一些字段(时间,文本,类型)。我想构建一个查询,以针对每种类型返回以最大时间值引入的文本。 Oracle有一些限制,没有一些技巧就很难构建查询。

我正在努力获得正确的查询,有人可以帮助我吗?

TIME TEXT TYPE
--------------------------
03.05.2020 AA 2
02.04.2020 BB 2
01.04.2020 CC 1

我想返回一个查询

03.05.2020 AA 2
01.04.2020 CC 1
sql oracle greatest-n-per-group
2个回答
0
投票

首先是获取每个max(TIME)type,然后将其加入您的tableA以获取其他字段(TEXT)

select * from tableA t
inner join 
     (select max(TIME) mt, type from tableA group by type) t1 on t1.mt=t.mt and t.type= t1.type

0
投票

您可以使用row_number(或density_rank):

select
    t.*
from (
    select
        t.*,
        row_number() over(partition by type_column order by time_column desc) rn
    from tbl t
) t
where t.rn = 1
© www.soinside.com 2019 - 2024. All rights reserved.