2016-04-19 20 views
1

内の特定の列の値の数にサンプリングは、テーブルの例では、今、私はこれをサンプリングしたい..私は値のセットを持つテーブルを持っているpostgreSQLの

ID | Customer_name | workorder 
1 | abc   | dispatch 
2 | xyz   | not_dispatch 
3 | jdk   | dispatch  

であり、これは1M行の合計に行きますデータセットを5000行に増やし、3400の作業領域を 'not_dispatch'、1600を 'dispatch'としたいと考えています。 これはPostgreSQLでどのように行うことができますか?

+0

だから、派遣で派遣し、1600年ではない3400であなたが5000レコードのサンプルをしたいですか? –

+0

はい、1Mの行から私はwanttoサンプル5000レコード.. not_dispatchを持っている3400とディスパッチしている1600と –

+0

あなたはどんな特定の方法でサンプリングしますか?非常に多くのレコード(1百万)からランダムサンプルを取ることはそれほど効率的ではないかもしれません。 –

答えて

1

ファー効率的、効果的なもののから:

SELECT * 
FROM (
    SELECT * FROM my_table 
    WHERE workorder = 'dispatch' -- other filters 
    ORDER BY random() LIMIT 1600) sub1 
UNION 
SELECT * 
FROM (
    SELECT * FROM my_table 
    WHERE workorder = 'not_dispatch' -- other filters 
    ORDER BY random() LIMIT 3400) sub2; 
関連する問題