sql - 在 Hive 中选择一个随机行作为聚合函数

标签 sql hive

我想按列分组,然后从另一列中选择随机行。在 Presto,有 arbitrary .

例如。我的查询是:

SELECT a, arbitrary(b)
FROM foo
GROUP BY a

我如何在 Hive 中做到这一点?

编辑:

“随机”,我的意思是“任意”。每次都可能只是第一行。

最佳答案

您可以使用以下逻辑在 Hive 中获得所需的结果。
为 rand(b) 提供一个 row_number 并选择您想要的任何 row_number。每次它都会从 b 列返回一个随机值。

select a, b
from (
select a, b,row_number() over( partition by a order by rand(b) asc) rn from foo
)a
where rn=1
group by a, b;

关于sql - 在 Hive 中选择一个随机行作为聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44809449/

相关文章:

xml - 为什么 Apache Hive XPath 只返回第一个匹配项?

hadoop - 带偏移量的 Hbase 扫描

sql - 有没有更有效的方法来编写这个 SQL 查询来删除不同的值?

sql - 如何将映射转换为配置单元中的列?

SQL Server 2008无法定义小数点后4位的十进制类型?

sql - Postgres一对多

shell - .hivelog 和 .out 使用的区别

hadoop - 同时使用 Hive 和 Impala 时出现表文件夹权限问题

php - 如何从php中的另一个键排序和更新唯一键

mysql - 如何在MySQL中检查重复值