このコマンドで、1から200,000までの16384個のランダムな整数を生成できます。
SELECT generate_series (1,16384),(random()*200000)::int AS id
そのような整数の10セットを生成したいと思います。各セットには、次のような整数の識別子が必要です。
1 | 135
1 | 1023
... 16384個の乱数の最初のセットの終わり
2 | 15672
2 | 258732
... 16384個の乱数の2番目のセットの終わり
これはSQLコマンドで可能ですか、それとも関数を作成する必要がありますか?
これでいいですか?
SELECT
n, generate_series (1,16384), (random()*200000)::int AS id
FROM
generate_series (1,10) AS x(n) ;
または同様:
SELECT
n, i, (random()*200000)::int AS id
FROM
generate_series (1,10) AS x(n)
CROSS JOIN
generate_series (1,16384) AS y(i) ;
あなたはこのようなことをすることができます:
SELECT ((generate_series-1)/16384)::int+1 as series, (random()*200000)::int as Rand
from generate_series(1,10*16384);
これは、置換を伴うサンプリングを行います。交換せずにそれを行う必要がある場合、それはかなり難しいです。