web-dev-qa-db-ja.com

Postgresql。ランダムな整数のセットを生成する

このコマンドで、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コマンドで可能ですか、それとも関数を作成する必要がありますか?

1
Alexandros

これでいいですか?

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) ;
5
ypercubeᵀᴹ

あなたはこのようなことをすることができます:

SELECT ((generate_series-1)/16384)::int+1 as series, (random()*200000)::int as Rand
    from generate_series(1,10*16384);

これは、置換を伴うサンプリングを行います。交換せずにそれを行う必要がある場合、それはかなり難しいです。

4
jjanes