group-by没有按我所希望的那样工作

ukqbszuj  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(265)

嗨,所以我试图输出的城市与playerid与最多ab(运行)。
输出最擅长击球的球员的出生城市(ab)
他的事业。
现在我得到了我想要的辛辛那提,桑德01,14432,这是正确的。但它会出现在这样的3。这对每个城市、球员和跑动来说都是一样的,就像第二多。我只需要一个条目,其他两个是多余的。我想我在小组里做错了什么,有什么帮助吗?请

Cinncinati, sander01, 14432
Cinncinati, sander01, 14432
Cinncinati, sander01, 14432
Chicago, dere90, 12324
Chicago, dere90, 12324
Chicago, dere90, 12324

SELECT a.bcity,a.id, b.ab FROM master a 
JOIN
(SELECT id, SUM(ab) as ab FROM batting
GROUP by id) b
ON a.id = b.id
ORDER by b.ab DESC
limit 30;
ivqmmu1c

ivqmmu1c1#

请参阅distinct以获取distinct结果集。现在开始讨论您的问题,将主表与结果集b的顶行连接起来。

select a.bcity,b.id,b.ab from master a 
join 
(select id,sum(ab) as ab from batting
 group by id
 order by ab desc
 limit 1
) b
on a.id = b.id

您可以将限制30更改为限制1,并得到相同的结果。

SELECT a.bcity,a.id, b.ab FROM master a 
JOIN
(SELECT id, SUM(ab) as ab FROM batting
 GROUP by id
) b
ON a.id = b.id
ORDER by b.ab DESC
 limit 1;

注意:如果有多个玩家拥有相同的最大跑步次数,那么限制1将不会给出正确答案。

相关问题