2016-06-28 8 views
1

を含む列の合計検索:私はこの選択クエリ持つウィンドウ関数

SELECT 
    total, 
    COALESCE(total - Lag(total)OVER(ORDER BY total), 0) AS dif_total 
FROM (select count(*) as total 
    FROM 
     tbl_person 
    left join 
     tbl_census 
    on 
      tbl_census.person_id = tbl_person.person_id 
    group by extract(year from tbl_census.date) 
    ) abc 

すると、私は列dif_totalの合計を見つけることができる方法はありますか?
ウィンドウ関数が含まれているため、Sum()を使用できません。

私は関数を呼び出して配列を列に変換してからSum()を使うことができるかもしれないので、列を配列に保存しようとしました。
しかし、私はそれを台無しにしました。

ここに私の関数の問い合わせがあります。

CREATE OR REPLACE function growth() Returns int[] as $$ 
declare total2 integer[]; 
BEGIN 
     SELECT 
      total, 
      COALESCE(total - Lag(total)OVER(ORDER BY total), 0) into total2 
     FROM 
      (select count(*) as total 
      from 
       tbl_person 
      group by extract(year from bdate) 
      ) abc ; 
RETURN total2; 
END; $$ LANGUAGE plpgsql; 

機能クエリが正常に実行され、警告やエラーが表示されませんが、私は、私はそれを選択しようとすると、それは「

配列値が始まらなければなりませんと言うだろうので、私はそれが間違っていたと思います{"または寸法情報

私はpostgreにストアドファンクションを使用することで非常に新しいです。
機能を変更するにはどうすればよいですか? 上記の列dif_totalを合計する他の方法は何ですか?

答えて

1

他の選択肢でまとめてみませんか?

SELECT total,sum(dif_total) as total_2 
FROM (YOUR QUERY HERE...) 
GROUP BY total 
関連する問題