gpt4 book ai didi

database - HIVE:GROUP BY 的行为与在 MySQL 中不同

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:05 24 4
gpt4 key购买 nike

我对 MySQL 有一些经验,最近我不得不在 HIVE 上做一些工作。

查询的基本结构在两者之间非常相似,但 HIVE 中的 GROUP BY 似乎有点不同......因此我无法实现我以前在 MySQL 中使用 GROUP BY 可以实现的。

以下是我的问题,假设我有一个包含 A、B、C 列的表,我想选择最大行。 B 列值按 A 列分组。我会这样做:

SELECT A, max(B) FROM myTable GROUP BY A

上面的代码可以在 HIVE 中正常运行。但是,如果我还想查看 C 列中与 max 位于同一行的值怎么办? B值?在 MySQL 中我可以这样做:

SELECT A, max(B), C FROM myTable GROUP BY A

但在 HIVE 中我不能这样做。它提示C不在GROUP BY键中,但是如果我将C添加到GROUP BY中,结果完全不是我想要的。

那么在HIVE中如何选择这样想要的结果呢?有人说在 C 列上使用 collect_set 可以解决问题,但我不知道 collect_set 是如何排序的,因此不知道返回哪个元素...

最佳答案

好吧,我想通了......下面的方法可以解决问题:

SELECT A, maxB, C FROM myTable JOIN
(SELECT A, max(B) as maxB FROM myTable GROUP BY A) temp
ON myTable.A = temp.A AND myTable.B = temp.maxB

事实证明,我必须在 HIVE 中编写更多代码才能获得与在 MySQL 中仅使用一行代码相同的结果...:(

关于database - HIVE:GROUP BY 的行为与在 MySQL 中不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com