2016-09-22 2 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

관련 문제