[英]How to select rows by max value from another column in Oracle
我在 Oracle Table1
和Table2
有兩個數據集。 當我運行這個:
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_X
是MAX
值,如下所示:
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.