2016-09-22 14 views
0

過去7,30,90、および180日間の1日あたりの平均平均金額を計算したいと思います。私はPL/pgSQLを使用してそれを行う方法を知っていますが、可能ならば1つのクエリでそれを行うことを好むでしょう。このような何か:PostgreSQL:1つのクエリで複数の平均を計算する

SELECT SUM(amount)/days 
FROM transactions 
WHERE created_at > CURRENT_DATE - ((days || ' day')::INTERVAL) 
AND days = ANY(ARRAY[7,30,90,180]); 

ERROR: column "days" does not exist

答えて

1

あなたが平均を計算するテーブルと使用相関サブクエリに列を変換するためにunnestを使用することができます。

SELECT 
    days, 
    (SELECT SUM(amount)/days 
    FROM transactions 
    WHERE created_at > CURRENT_DATE - ((days || ' day')::INTERVAL) 
    ) AS average 
FROM unnest(ARRAY[7,30,90,180]) t(days) 
+0

グレート、感謝を! – Vincent