IMPALA LEFT 加入子查询

IMPALA LEFT join with subquery

假设我有以下数据:

Table ABC

名字
伊布 第 1 组
克里斯蒂亚诺·罗纳尔多 第 2 组
梅西 第 1 组
爱德华多·佩雷拉·罗德里格斯 第 1 组

我想要的最终结果是什么(下面的组号是运行dom):

姓名
伊布 870
克里斯蒂亚诺·罗纳尔多 544
梅西 870
爱德华多·佩雷拉·罗德里格斯 870

为了实现这个结果,我编写了一个在 AWS Athena 中完美运行的查询,如下所示:

select table1.name,
       subQuery1.random_cod_group
from ABC table1
left join(select group, cast(rand(1234) * 100 as integer) as random_cod_group
          from ABC group by group) subQuery1
     on subQuery1.group = table1.group

然而 - 令我惊讶的是 - 当我 运行 在“impala”中进行相同的查询时,显示的结果不同,如下例所示。 同一组显示不同的号码(而不是 'keeping' 同一组的相同 运行dom 号码)

姓名
伊布 987
克里斯蒂亚诺·罗纳尔多 478
梅西 874
爱德华多·佩雷拉·罗德里格斯 75

我真的不明白为什么...谁能帮帮我?

非常感谢!

也许您可以尝试其他方法。可能每次调用都会生成一个随机数,这意味着连接不一定是错误的。

如果不是强制生成随机数,我建议使用:

select table1.name,
       subQuery1.random_cod_group
from ABC table1
left join(select group, row_number() over (order by group) as random_cod_group
          from ABC group by group) subQuery1 on subQuery1.group = table1.group