以下内容返回按10%
值分层的A
和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
X = X1
如何根据多个列的元组值对我的查询进行分层(例如X
,Y
)?
例如,如果X
取值[X0, X1]
而Y取值[Y0, Y1]
,我想得到的样本是:
X = X0
和Y=Y0
X = X0
和Y=Y1
X = X1
和Y=Y0
X = X1
和Y=Y1
答案 0 :(得分:1)
我使用上面的方法,但请使用您要考虑的列的哈希值。