选择多列聚合

耶稣帕拉迪纳斯

我有一个包含一些字段(时间、文本、类型)的表格。我想构建一个查询来为每种类型返回引入时间最大值的文本。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
巴巴罗斯·欧占

一种选择是使用DENSE_RANK, FIRST and LAST Analytic Functions作为

MAX(time) KEEP (DENSE_RANK LAST ORDER BY time ) OVER( PARTITION BY type )

WITH t2 AS
(
SELECT t.*, MAX(time) KEEP (DENSE_RANK LAST ORDER BY time ) OVER( PARTITION BY type ) 
            AS highest
  FROM t
)
SELECT time, text, type
  FROM t2
 WHERE highest = time   

通过此方法列出所有关系(time每个type组的重复值)。

Demo

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章