2017-06-07 18 views
-1

クエリを1000回実行し、その結果をテーブルに追加する必要があります。postgreSQLでクエリを繰り返し、テーブルに結果を追加する方法

Select max_gridco, count(max_gridco) as TaxLots, sum(population) as pop_sum 
from 
(
    Select tlid, max_gridco, population 
    from (
     select tlid, max_gridco, population, st_intersects(tle.geom, acres025.geom) 
     from tle, acres025 
     where max_gridco not in (0, 1) 
     order by RANDOM() 
     limit 1000 
    ) as count 
    where st_intersects = 't' 
    order by max_gridco 
) as gridcode_count 
group by max_gridco; 

私は自動的にこの1000倍を実行することができます方法はありますし、出力テーブル内の実行番号が含まれて列を持っている:私は私が繰り返されることを希望するもので、次のコードを持っていますか?私のテーブルは次のようになります:

実行番号| max_gridco | TaxLots | pop_sum

PgAdmin3でループコマンドを実行しようとしていますが、正しい構文が得られないようです。

+0

だから**右、**選択を使用してテーブルに** 1000の値を挿入する必要がありますか? –

+0

いいえ、最初の投稿がごめんなさい、ごめんなさい。私はそれを言葉にするのに困っていた。私は私の質問をより明確にするために投稿を編集しました。 –

答えて

1

使用DOブロックまたは関数を作成して、例えば:

DO 
$$ 
begin 
for i in 1..1000 loop 
    insert into save_to_table (Run number,max_gridco,TaxLots,pop_sum) 
    Select i, max_gridco, count(max_gridco) as TaxLots, sum(population) as pop_sum 
    from 
    (
     Select tlid, max_gridco, population 
     from (
      select tlid, max_gridco, population, st_intersects(tle.geom, acres025.geom) 
      from tle, acres025 
      where max_gridco not in (0, 1) 
      order by RANDOM() 
      limit 1000 
     ) as count 
     where st_intersects = 't' 
     order by max_gridco 
    ) as gridcode_count 
    group by max_gridco; 
end loop; 
end; 
$$ 
; 
+0

ありがとうございました。それはまさに私が探していたものです。 –

0

あなたはに必要がある場合は、使用してそれを行うことができます選択した特定の値を挿入します。

INSERT INTO table2 (column1, column2, column3, ...) 
SELECT column1, column2, column3, ... 
FROM table1 
WHERE condition; 

https://www.w3schools.com/sql/sql_insert_into_select.asp)を

あなたが探しているものということですか?

+0

いいえ、申し訳ありませんが、私はより明確にすべきだったと思います。上記のクエリは、私が持っているテーブルから1000のランダムな行を選択し、出力を要約します。それは6つの行を出力します:識別番号、タクシーの数、および人口の合計。私は結果を自動化することを望んでいます。つまり、クエリを1000回繰り返し、実行ごとに出力テーブルを一覧表示します。 –

関連する問題