随机选择HIVE中的行,其中一半必须满足条件

时间:2016-06-08 18:16:01

标签: hadoop hive hiveql

现在我有:

SELECT id, name FROM table1
   DISTRIBUTE BY rand()
   SORT BY rand()
   limit 2;

但是我需要添加一个限定语句,以便随机检索的一半行满足指定的条件:

WHERE count(id) > 3
GROUP BY name;

而另一半的行不满足这个条件。但是,我不能比另一个更多地表示一个子集,即那些具有计数(id)&gt;的子集。 3应与<3的量相同。我想过使用一个联盟,但认为这是不可能的,因为查询将查询同一个表。我该怎么做呢?提前谢谢!

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

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语句返回相同的列数,以便联合工作。