繁体   English   中英

如何按最大值从 Oracle 中的另一列中选择行

[英]How to select rows by max value from another column in Oracle

我在 Oracle Table1Table2有两个数据集。 当我运行这个:

SELECT A.ID, B.NUM_X
FROM TABLE1 A
LEFT JOIN TABLE2 B ON A.ID=B.ID
WHERE B.BOOK = 1

它返回这个。

ID        NUM_X
1          10
1           5
1           9
2           2
2           1
3           20
3           11

我想要的是DISTINCT ID ,其中NUM_XMAX值,如下所示:

ID          NUM_x
1            10
2             2
3            20

您可以使用聚合:

SELECT A.ID, MAX(B.NUM_X)
FROM TABLE1 A LEFT JOIN
     TABLE2 B
     ON A.ID = B.ID
WHERE B.BOOK = 1
GROUP BY A.ID;

如果你想要额外的列,我会推荐窗口函数:

SELECT A.ID, MAX(B.NUM_X)
FROM TABLE1 A LEFT JOIN
     (SELECT B.*,
             ROW_NUMBER() OVER (PARTITION BY ID ORDER BY NUM_X DESC) as seqnum
      FROM TABLE2 B
     ) B
     ON A.ID = B.ID AND B.seqnum = 1
WHERE B.BOOK = 1
GROUP BY A.ID;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM