sql - 在 HIVE 中分组不能像我想要的那样工作

标签 sql hadoop hive

你好,所以我正在尝试输出具有最多 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/

相关文章:

MySql,SELECT * FROM 带索引列

Sql根据用户名返回表信息

c# - 想要使用 CRUD 操作在 asp.net c# 中创建 GridView 。请给我插入、更新、删除查询

sql - Oracle 中不是 REGEXP_LIKE

shell - 复制 hadoop 目录中除 1 以外的所有文件

Hadoop Pig 排序结果;找到订单位置?

hadoop - Apache Apex CLI 命令中 Shutdown-app 和 kill-app 的区别

sql - 重新编写SQL窗口函数(对partition()进行排名),而不使用窗口函数

hadoop - 如何解决Hive中过多的分区问题

hadoop - Hive/HBase 集成 - Zookeeper session 立即关闭