sql如何使用join和groupby显示max函数的匹配大小写

igetnqfo  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(318)

我正在尝试使用hadoop服务器上的sql查询来获取数据。我有两张table:
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和t2连接起来,基于它们的公共列t1.b=t2.d,然后用e(bob,jim,等等)对值进行分组,从中得出a的最大值(jims的max(a)是24,bob的max(a)是55)。
到目前为止,我可以加入并按e分组,但无法让b打印出来,因为groupby函数正在寻找它。它声明它不是聚合函数。如何使其正常工作,以便能够查询和检索表示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列显示没有错误。
谢谢

bybem2ql

bybem2ql1#

我想你不想 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;

相关问题