你好,所以我正在尝试输出具有最多 AB(运行)playerid 的城市。
输出在
中击球数(AB)最多的球员的出生城市
他的职业生涯。
现在我得到了我想要的 Cinncinati, sander01, 14432,这是正确的。但它会像这样出现在 3 中。对于每个城市和球员来说也是如此,就像第二名一样。我只需要 1 个条目,其他 2 个是多余的。我认为我对 group by 做错了什么,有什么帮助吗?请
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;
最佳答案
引用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
您可以将 LIMIT 30 更改为 LIMIT 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;
注意:如果有多位玩家的得分相同,则 LIMIT 1 不会给出正确答案。
关于sql - 在 HIVE 中分组不能像我想要的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36783574/