现在我有:
SELECT id, name FROM table1
DISTRIBUTE BY rand()
SORT BY rand()
limit 2;
但是我需要添加一个限定语句,以便一半随机检索的行满足指定条件:
WHERE count(id) > 3
GROUP BY name;
而另一半行不满足此条件。但是,我不能让一个子集比另一个子集代表过多,即那些count(id)> 3的子集应该与那些<3的子集相同。我曾考虑使用联合,但认为这是不可能的,因为查询将查询同一张表。我该怎么做呢?提前致谢!
最佳答案
尝试这样的事情:
select
*
from(
select
Src_sys_id
From fin.table
where src_sys_id = "123"
limit 10
union all
select src_sys_id
From fin.table
where src_sys_id <> "123"
limit 10) a;
如果需要,可以将任何其他子句添加到select语句中。只需确保每个select语句返回相同的列数即可使联合工作。
关于hadoop - 随机选择HIVE中的行,其中一半必须满足条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37709972/