以下返回按 的值分层的和列的10%样本。AXX
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
如何按多个列(例如, )的元组值对查询进行分层?XY
例如,如果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