2016-09-22 276 views
0

我想計算過去7,30,90和180天每天花費的平均金額。我知道如何使用PL/pgSQL來完成它,但如果可能的話,我寧願在一個查詢中執行它。事情是這樣的:PostgreSQL:在一個查詢中計算多個平均值

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