2017-12-20 17 views
1

データセットが約70,000行になりましたが、このテーブルを正確な行数で3つに分割したい(コードはSASで適用され、現在postgresqlに移動しています)、 5001-25000の2つ、残りの行の最後の1つ、およびそれらのいずれかに重複した行はありません。postgresqlでテーブルを分割する方法

+--------+-----+--------+-----+ 
| cst_id | age | salary | sex | 
+--------+-----+--------+-----+ 
|  1 | 44 | 2000 | M | 
|  2 | 23 | 3000 | F | 
|  3 | 34 | 4000 | M | 
|  4 | 51 | 5000 | M | 
|  5 | 26 | 6000 | F | 
|  6 | 28 | 7000 | F | 
|  7 | 39 | 8000 | M | 
+--------+-----+--------+-----+ 

最終的に私は、私は(そのよう3rows-2rowsレスト行として)割り当てる行の正確な数を持つ3台をしたい、と彼らはすべてのdistinct.likeです: TABLE1:

+--------+-----+--------+-----+ 
| cst_id | age | salary | sex | 
+--------+-----+--------+-----+ 
|  1 | 44 | 2000 | M | 
|  2 | 23 | 3000 | F | 
|  3 | 34 | 4000 | M | 
+--------+-----+--------+-----+ 
よう

表2:

+--------+-----+--------+-----+ 
| cst_id | age | salary | sex | 
+--------+-----+--------+-----+ 
|  4 | 51 | 5000 | M | 
|  5 | 26 | 6000 | F | 
+--------+-----+--------+-----+ 

表3:

+--------+-----+--------+-----+ 
| cst_id | age | salary | sex | 
+--------+-----+--------+-----+ 
|  6 | 28 | 7000 | F | 
|  7 | 39 | 8000 | M | 
+--------+-----+--------+-----+ 

postgresqlを使用してこれを終了するにはどうすればよいですか?

+2

とは何ですか? –

+0

@YahyaHussein上記の分割ジョブを終了するためにpostgresqlを使用する方法は? – Robinson

+0

個別の行とrow_numberを持つセットを選択し、それをチャンクに挿入すると仮定しますか? –

答えて

0

このプロセスを機能としてステップに分けることができます。

  1. 異なる行の合計数を取得します。
  2. その値を3で割って、その値をDECLARED変数(_size)として保存します。
  3. table_1、table_2、およびtable_3を作成します。
  4. LIMIT(_size)のINSERT INTO table_1です。
  5. LIMIT(_size)のINSERT INTO table_2 WHERE id> table_1の最大のIDです。
  6. INSERT INTO table_3 LIMIT(_size)WHERE id> table_2の最大のIDです。

うまくいけば、これが役に立ちます。

+0

あなたのアイデアに感謝します。後で試してみてください – Robinson

関連する問題