以下返回按 的值分层的和列的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]
则返回以下的并集:
- 10% 的行
X = X0
- 10% 的行
X = X1
如何按多个列(例如, )的元组值对查询进行分层?X
Y
例如,如果X
采用 values[X0, X1]
并且 Y 采用 values [Y0, Y1]
,我想得到一个样本,它是以下的并集:
- 10% 的行,其中
X = X0
和Y=Y0
- 10% 的行,其中
X = X0
和Y=Y1
- 10% 的行,其中
X = X1
和Y=Y0
- 10% 的行,其中
X = X1
和Y=Y1