6

以下返回按 的值分层的和列的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 = X0Y=Y0
  • 10% 的行,其中X = X0Y=Y1
  • 10% 的行,其中X = X1Y=Y0
  • 10% 的行,其中X = X1Y=Y1
4

1 回答 1

2

我会使用你上面的方法,但使用你想要考虑的列的哈希值。

于 2015-06-22T15:00:14.590 回答