我正在尝试在Hadoop服务器上使用SQL查询来提取数据。我有两个表:
11
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;
关于sql - SQL如何使用JOIN和GROUPBY显示MAX函数的匹配情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54448731/