1

初めて R を学んだときに、繰り返しの多いタスクを処理する際に for ループの威力を発見しました。現在、同じロジックを SQL に適用したいと考えていますが、psql の基礎を理解するのに苦労しています。私はPostgresで作業していますが、ANSIソリューションは大歓迎です。

問題はこれです。名前のリストがあります。名前ごとに、レポートを生成したいと思います。クエリを実行しているテーブルの 1 つが非常に巨大であるため、すべての名前に対してスクリプトを実行してから、名前だけをフィルター処理することはできません。そのため、次のようなことを行いたいと考えています。

for(i in list){

select distinct name, key 
into temp table stuff from table1 where name = i

select case when x.date is null then y.date else x.date end date
     , widgets
     , troll
     , cookie
     , googol
     , bite
     , clicks 
into temp table junk2 
from (
   select substring(datetime,1,10) as date
         , count(*) as bite
         , count(distinct cookie) as cookie
         , count(distinct troll) as troll 
   from table2
   where order_key in (select key from stuff)
   group by substring(datetime,1,10)
   order by substring(datetime,1,10) 
   ) x 
full join (
   select substring(datetime,1,10) as date
        , count(distinct widgets) as widgets
        , count(distinct googol) as googol
        , count(*) as clicks 
   from table3
   where order_key in (select key from stuff)
   group by substring(datetime,1,10)
   order by substring(datetime,1,10) 
   ) y 
on x.date = y.date

COPY junk2 to name_print(i) --psuedocode

discard all
}
4

1 に答える 1

0

コードで行うすべてのことを言い換える忍耐力がないため、これは完全な答えではありませんが、要するに、あなたが探しているのは次のとおりだと思います。

INSERT INTO name_print (...column names separated with commas...)
SELECT ...fields...
 FROM table1 ...all the joins...
 WHERE table1.name IN (...list of values or another select...);
于 2012-09-17T20:10:01.047 に答える