簡體   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