Sql postgres中是否有与oracle sample子句等效的语句

Sql postgres中是否有与oracle sample子句等效的语句,sql,oracle,postgresql,Sql,Oracle,Postgresql,如果我想要oracle数据库表中的“随机”行样本,我可以查询 select * from mytable sample(1) 并得到1%的回报 Postgres中是否有等效的命令?如果是9.5或更高版本,您可以使用TABLESAMPLE: TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] 根据文件: table_名称后的TABLESAMPLE子句表示指定的 应使用采样_方法检索中的行子集 那张桌子

如果我想要oracle数据库表中的“随机”行样本,我可以查询

select * from mytable sample(1)
并得到1%的回报


Postgres中是否有等效的命令?

如果是9.5或更高版本,您可以使用
TABLESAMPLE

TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ]
根据文件:

table_名称后的TABLESAMPLE子句表示指定的 应使用采样_方法检索中的行子集 那张桌子。此取样先于任何其他方法的应用 筛选器,例如WHERE子句。标准的PostgreSQL发行版 包括两种采样方法,伯努利和系统,以及其他 可以通过扩展在数据库中安装采样方法

伯努利和系统抽样方法都接受一个 参数,它是要采样的表的分数,表示为 百分比介于0和100之间。此参数可以是任何实数 表情。(其他抽样方法可能接受更多或不同的结果。) 这两个方法各自返回一个随机选择的 将包含大约指定百分比的 桌子上的行。伯努利方法扫描整个表并 使用指定的参数独立选择或忽略单个行 可能性该系统方法对每个模块进行块级采样 具有指定被选择机会的块;每行中的所有行 返回选定的块。系统方法明显更快 当采样率较小时,比伯努利方法更有效 指定,但它可能会以 聚类效应的结果

可选的REPEATABLE子句指定种子数或表达式 用于在采样方法中生成随机数。这个 种子值可以是任何非空浮点值。两个问题 指定相同的种子,参数值将选择相同的样本 如果同时未更改该表,则为该表的。但是 不同的种子值通常会产生不同的样本。如果 如果不提供可重复性,则为每个样本选择一个新的随机样本 查询请注意,某些附加采样方法不接受 可重复,每次使用都会产生新的样品

链接:

来自介绍该功能的博客的详细信息: