開始と終了のタイムスタンプに基づいて、データの範囲に対していくつかの基本的な統計を行う関数があります。
CREATE OR REPLACE FUNCTION cal(TIMESTAMP, TIMESTAMP, OUT Date_Time timestamp with time zone, OUT avg numeric, OUT stddev numeric, OUT Rstedv_per numeric)
AS $$
SELECT
max(datetime) as Date_Time,
avg(SO2) AS Mean,
stddev_samp(so2) as STD_DEV,
stddev_samp(so2)/avg(SO2)*100 as Rstedv_Per
FROM Table43
WHERE datetime > $1 AND datetime < $2;
$$
LANGUAGE SQL;
これは、次のような単純な単一選択でうまく機能します。
select * FROM
cal('2014-08-02 05:29:00', '2014-08-02 05:32:00')
しかし今、別の関数を作成するのに問題があり、「cal」関数の複数の呼び出しを組み合わせることができる select ステートメントさえも作成できません。たとえば、3 つの期間を含むテーブルを返したいとします。したがって、戻り値は 4 列 x 3 行になります。
「2014-08-02 05:29:00」、「2014-08-02 05:32:00」 「2014-08-02 05:35:00」、「2014-08-02 05:39:00」 「2014-08-02 05:45:00」、「2014-08-02 05:49:00」