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中这样做.
谢谢 !
这是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.看到这个问题.