[英]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.