采样查询

TABLESAMPLE 语句用于对表进行采样。 它支持以下采样方法:

  • TABLESAMPLE(x ROWS):对表采样给定行数。
  • TABLESAMPLE(x PERCENT):对表采样给定百分比。 请注意,百分比定义为介于 0 到 100 之间的数字。
  • TABLESAMPLE(BUCKET x OUT OF y):对表采样 x/y 部分。

注意

  • TABLESAMPLE 返回所请求的大约行数或分数。
  • 如果随机性很重要,请始终使用 TABLESAMPLE (X PERCENT)TABLESAMPLE (X ROWS) 不是简单的随机示例,而是改用 LIMIT 来实现的。

语法

TABLESAMPLE ({ integer_expression | decimal_expression } PERCENT)
    | TABLESAMPLE ( integer_expression ROWS )
    | TABLESAMPLE ( BUCKET integer_expression OUT OF integer_expression )

示例

SELECT * FROM test;
+--+----+
|id|name|
+--+----+
| 5|Alex|
| 8|Lucy|
| 2|Mary|
| 4|Fred|
| 1|Lisa|
| 9|Eric|
|10|Adam|
| 6|Mark|
| 7|Lily|
| 3|Evan|
+--+----+

SELECT * FROM test TABLESAMPLE (50 PERCENT);
+--+----+
|id|name|
+--+----+
| 5|Alex|
| 2|Mary|
| 4|Fred|
| 9|Eric|
|10|Adam|
| 3|Evan|
+--+----+

SELECT * FROM test TABLESAMPLE (5 ROWS);
+--+----+
|id|name|
+--+----+
| 5|Alex|
| 8|Lucy|
| 2|Mary|
| 4|Fred|
| 1|Lisa|
+--+----+

SELECT * FROM test TABLESAMPLE (BUCKET 4 OUT OF 10);
+--+----+
|id|name|
+--+----+
| 8|Lucy|
| 2|Mary|
| 9|Eric|
| 6|Mark|
+--+----+