簡體   English   中英

SQL如何使用JOIN和GROUPBY顯示MAX函數的匹配情況

[英]SQL how to use JOIN and GROUPBY to display the matching case of a MAX function

我正在嘗試在Hadoop服務器上使用SQL查詢來提取數據。 我有兩個表:

T1

a  | b | c 
10  143  a  
23  163  g
24  536  r
55  475  a

T2

d  |  e |
143  bob
086  jim
536  jim
475  bob

我試圖根據它們的公共列t1.b = t2.d將t1與t2連接起來,然后將值按e(bob,jim等)分組,然后從中拉出a的最大值。 (jims的max(a)為24,bob的max(a)為55)。

到目前為止,我可以加入e並按e分組,但是由於GROUPBY函數正在尋找它,所以無法讓b打印出來。 它聲明它不是聚合函數。 我如何使它正常運行,以便能夠查詢和檢索表示max(a),b和e的表。

SELECT max(a) as max_a, e
FROM (t1 left join t2 on t1.b=t2.d)
GROUP BY e

這滿足了我的需要,但無法使b列顯示而沒有錯誤。

謝謝

我認為您不希望group by 我認為您想要窗口功能:

SELECT t.*
FROM (SELECT t1.*, t2.e,
             row_number() over (partition by t2.e order by t1.a desc) as seqnum
      FROM t1 left join
           t2
           on t1.b = t2.d
     ) t
WHERE seqnum = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM