如果我想从oracle数据库的表中获取行的“随机”样本,我可以查询
select * from mytable sample(1)
再拿1%回来
Postgres中是否有等效的命令?
最佳答案
如果是9.5或更高版本,则可以使用TABLESAMPLE
:
TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ]
根据文件:
表名后面的TABLESAMPLE子句表示
采样方法应用于检索
那张桌子。此抽样先于任何其他
筛选,如WHERE子句。标准的PostgreSQL发行版
包括两种采样方法,BERNOULLI和SYSTEM,以及其他
采样方法可以通过扩展安装在数据库中。
伯努利和系统抽样方法各自接受一个
参数,它是要采样的表的分数,表示为
介于0和100之间的百分比。这个论点可以是任何有价值的
表达。(其他抽样方法可能接受更多或不同
参数)这两个方法各自返回随机选择的
将包含大约指定百分比的表
表格的行数。BERNOULLI方法扫描整个表并
使用指定的
可能性。系统方法对每个
具有指定被选中机会的块;每个块中的所有行
返回选定的块。系统方法明显更快
比伯努利方法小的抽样百分比
指定,但它可能返回一个较少随机的表样本作为
聚类效应的结果。
可选的REPEATABLE子句指定种子数或表达式
用于在采样方法中生成随机数。这个
种子值可以是任何非空浮点值。两个问题
指定相同的种子和参数值将选择相同的示例
如果同时未更改表,则返回表的。但是
不同的种子值通常会产生不同的样本。如果
不提供可重复性,则为每个
查询。请注意,某些附加采样方法不接受
可重复,每次使用都会产生新的样本。
链接:http://www.postgresql.org/docs/current/static/sql-select.html
来自介绍该功能的博客的详细信息:http://blog.2ndquadrant.com/tablesample-in-postgresql-9-5-2/
关于sql - postgres中是否有相当于oracle sample子句的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37277918/