以下返回 10%
A
sample 和 X
按 X
的值分层的列.
select A, X from(
select A,
count(*) over (partition by X) as cnt,
rank() over (partition by X order by rand()) as rnk
from my_table) table
where rnk <= cnt*0.1
换句话说,如果
X
取值 [X0, X1]
它返回以下联合:X = X0
所在行的 10% X = X1
所在行的 10% 如何按 的值对查询进行分层元组对于几列(例如
X
、 Y
)?例如,如果
X
取值 [X0, X1]
和 Y 取值 [Y0, Y1]
,我想得到一个样本,它是以下各项的结合:X = X0
所在行的 10%和 Y=Y0
X = X0
所在行的 10%和 Y=Y1
X = X1
所在行的 10%和 Y=Y0
X = X1
所在行的 10%和 Y=Y1
最佳答案
我会使用你上面的方法,但使用你想要考虑的列的散列。
关于sql - Hive 中的分层抽样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25274641/