PostgreSQL では、テーブルからランダムな行を選択するために、TABLESAMPLE 句または RANDOM() 関数を ORDER BY 句および LIMIT 句と組み合わせて使用できます。方法を見てみましょう
- RANDOM() 関数を使用して PostgreSQL からランダムな行を取得します。
- TABLESAMPLE句を使用してPostgreSQLからランダムな行を取得する
方法 1: TABLESAMPLE 句を使用する
TABLESAMPLE 句を使用すると、テーブルから行のサンプルを取得できます。TABLESAMPLE は PostgreSQL バージョン 9.5 以降でサポートされていることに注意してください。
SELECT * FROM your_table TABLESAMPLE BERNOULLI (percentage);
BERNOULLI (percentage): サンプリングするテーブルの割合を指定します。
Student_detail テーブルを使用します。

たとえば、「student_detail」テーブルから約 30% の行を選択するには、次のようにします。
SELECT *
FROM student_detail
TABLESAMPLE BERNOULLI (30);出力:

方法2: RANDOM() 関数を使用する
RANDOM() 関数は、0 から 1 の間の乱数を生成します。これを ORDER BY および LIMIT と組み合わせることで、指定した数のランダムな行を選択できます。
SELECT * FROM your_table ORDER BY RANDOM() LIMIT number_of_rows;
Student_detail テーブルを使用します。

例1: PostgreSQLでランダムにN行を選択:
たとえば、student_detail テーブルからランダムに 5 行を選択するには、次のようにします。
SELECT *
FROM student_detail
ORDER BY RANDOM()
LIMIT 5;出力:

例2: PostgreSQL の行のランダム N パーセンテージを選択します。
select * from student_detail where random() < 0.70から1までの乱数を生成し、0.7未満の行を選択します。結果の表は次のようになります。
出力:

両方法のパフォーマンス比較
- ORDER BY RANDOM (): この方法は簡単ですが、行ごとに乱数を生成し、テーブル全体を並べ替える必要があるため、大きなテーブルでは非効率的になる可能性があります。
- TABLESAMPLE: この方法は、テーブル全体をソートする必要なく、ストレージ エンジンから行のサンプルを直接取得するため、大規模なテーブルではより効率的です。





