如何获取重复行ID之间的最大列值?

Aym*_*ric 2 sql oracle plsql oracle11g

我正在研究Oracle 11g数据库查询,该查询需要检索表中重复行之间的最高NUM值的列表.

以下是我的上下文示例:

ID  |  NUM
------------
1   |  1111 
1   |  2222 
2   |  3333
2   |  4444
3   |  5555
3   |  6666
Run Code Online (Sandbox Code Playgroud)

这是执行查询后我期望的结果:

NUM
----
2222    
4444
6666
Run Code Online (Sandbox Code Playgroud)

我知道如何在一个数字列表中获取GREATEST值,但我完全没有猜测如何对两行进行分组,如果它们具有相同的ID,则获取它们之间的最大列值.

Programmaticaly它很容易实现,但使用SQL它对我来说往往不那么直观.欢迎任何建议或建议,因为我甚至不知道哪个功能可以帮助我在Oracle中这样做.

谢谢 !

P. *_*eri 5

这是a的典型用例GROUP BY.假设你的Num字段可以比较:

SELECT ID, MAX(NUM) as Max
FROM myTable
GROUP BY ID
Run Code Online (Sandbox Code Playgroud)

如果您不想选择ID(如您提供的输出中那样),则可以运行

SELECT Max
FROM (
    SELECT ID, MAX(NUM) as Max
    FROM myTable
    GROUP BY ID
) results
Run Code Online (Sandbox Code Playgroud)

这里是SQL小提琴

编辑:如果NUM是,正如您稍后提到的那样VARCHAR2,则必须将其强制转换为Int.看到这个问题.