如果我想从oracle数据库中的表中获取“随机”行样本,我可以查询
select * from mytable sample(1)
并获得1%的回报
Postgres中是否有等效的命令?
答案 0 :(得分:0)
如果是9.5或更高版本,您可以使用TABLESAMPLE
:
TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ]
根据文件:
table_name之后的TABLESAMPLE子句指示指定的 sampling_method应该用于检索行的子集 那张桌子。此抽样先于任何其他的应用 过滤器,如WHERE子句。标准的PostgreSQL发行版 包括两种采样方法,BERNOULLI和SYSTEM等 采样方法可以通过扩展安装在数据库中。
BERNOULLI和SYSTEM采样方法各自接受一个 参数,即要采样的表的分数,表示为a 0到100之间的百分比。该参数可以是任何实值 表达。 (其他抽样方法可能接受更多或不同 参数。)这两个方法都返回一个随机选择的样本 包含大约指定百分比的表 表的行。 BERNOULLI方法扫描整个表格 使用指定的内容独立选择或忽略各个行 可能性。 SYSTEM方法对每个进行块级采样 具有指定机会被选中的块;每个中的所有行 返回选定的块。 SYSTEM方法明显更快 当采样百分比较小时,比BERNOULLI方法 指定,但它可能会返回一个较不随机的表样本作为 聚类效果的结果。
可选的REPEATABLE子句指定种子编号或表达式 用于在采样方法中生成随机数。该 种子值可以是任何非null浮点值。两个查询 指定相同的种子和参数值将选择相同的样本 如果表没有同时更改的话。但 不同的种子值通常会产生不同的样本。如果 如果没有给出REPEATABLE,则为每个选择一个新的随机样本 查询。请注意,某些附加采样方法不接受 可重复,并且每次使用时都会产生新的样品。
链接:http://www.postgresql.org/docs/current/static/sql-select.html
介绍该功能的博客详情:http://blog.2ndquadrant.com/tablesample-in-postgresql-9-5-2/