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