2016-05-17 4 views
2

におけるOracleサンプル句の同等のは、私は、Oracleデータベース内のテーブルからの行の「ランダム」のサンプルが必要な場合、私ははpostgresの

select * from mytable sample(1) 

を照会し、バック

1%を取得することができますがありますですPostgresに同等のコマンドがありますか?

答えて

0

9.5以上ならば、あなたはTABLESAMPLEを使用することができます。

TABLESAMPLE sampling_method (argument [, ...]) [ REPEATABLE (seed) ] 

ドキュメントによると:

TABLESAMPLE句table_nameは、指定 sampling_methodはサブセットを取得するために使用されるべきであることを示した後、テーブルの行の そのテーブル。このサンプリングはWHERE句のような他のフィルタの適用に先行しています。標準のPostgreSQLディストリビューション には、BERNOULLIとSYSTEMの2つのサンプリング方法があり、その他の拡張方法でデータベースにサンプリング方法をインストールすることができます。

BERNOULLIおよびSYSTEMサンプリング方法は、各サンプルにテーブルの一部である単一 引数を受け入れ、この引数は任意の実数値 発現することができ、0と100との間 パーセンテージとして表しました。 (他のサンプリング方法では、より多くのまたは異なる 引数を受け入れることがあります)。これらの2つのメソッドはそれぞれ、ランダムに選択した のサンプルを返します。 BERNOULLIメソッドはテーブル全体をスキャンし、 は、指定された 確率で個々の行を個別に選択または無視します。 SYSTEMメソッドは、指定された可能性のあるブロックをブロック ごとにブロックレベルでサンプリングします。選択した各ブロックのすべての行が返されます。小サンプリング率が である場合、SYSTEMメソッドはBERNOULLIメソッドよりも大幅に高速ですが、クラスタリング効果の結果として という結果が得られます。

オプションのREPEATABLE句は、サンプリング方法内で乱数を生成するために使用するシード番号または式 を指定します。 シード値には、NULL以外の浮動小数点値を使用できます。 が同じシード値および引数値を指定する2つのクエリは、テーブルが変更されていない場合は、テーブルの同じサンプル を選択します。しかし、 異なるシード値は通常、異なるサンプルを生成します。 REPEATABLEが指定されていない場合、 クエリごとに新しいランダムサンプルが選択されます。いくつかのアドオンサンプリング方法は REPEATABLEを受け入れず、各使用時に常に新しいサンプルを生成することに注意してください。

リンク:機能を導入するブログからhttp://www.postgresql.org/docs/current/static/sql-select.html

詳細:http://blog.2ndquadrant.com/tablesample-in-postgresql-9-5-2/