2012-12-11 3 views
3

임시 데이터베이스에서 어떻게 이동 평균을 적용 할 수 있습니까? 데이터에 온도가 포함되어 있으며 매 15 개 레코드마다 이동 평균을 적용하고 싶습니다.PostgreSQL의 시간 데이터베이스에서의 이동 평균

+0

사용하는 Postgre 버전 아래와 같이 쿼리를 해고 할 수 있습니까? –

+0

@BhavikAmbani, 버전 1.16.0. 내 문제가 중요합니까? –

+2

@ user1885733 1.16.0은 익숙한 postgresql 버전이 아닙니까? – hd1

답변

3

당신은

marc=# SELECT entity, name, salary, start_date, 
     avg(salary) OVER (ORDER BY entity, start_date 
          ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) 
     FROM salary; 

entity  | name  | salary | start_date |   avg   
-----------+-----------+---------+---------------+---------------------- 
Accounting | millicent | 850.00 | 2006-01-01 | 825.0000000000000000 
Accounting | jack  | 800.00 | 2010-05-01 | 916.6666666666666667 
R&D  | tom  | 1100.00 | 2005-01-01 | 966.6666666666666667 
R&D  | john  | 1000.00 | 2008-07-01 | 933.3333333333333333 
R&D  | maria  | 700.00 | 2009-01-01 | 733.3333333333333333 
R&D  | kevin  | 500.00 | 2009-05-01 | 633.3333333333333333 
R&D  | marc  | 700.00 | 2010-02-15 | 600.0000000000000000 
+0

해당 구문 오류가 발생했습니다 : ** 오류 : 또는 "행"근처에서 구문 오류 ** –

+0

나는 내가 사용하는 다른 예제로 업데이트 할 테이블을 이해하지 못합니다. . 업데이트 된 답변보기 –

2
WITH moving_avrag AS (
    SELECT 0 AS [lag] UNION ALL 
    SELECT 1 AS [lag] UNION ALL 
    SELECT 2 AS [lag] UNION ALL 
    SELECT 3 AS [lag] --ETC 
) 
SELECT 
    DATEADD(day,[lag],[date]) AS [reference_date], 
    [otherkey1],[otherkey2],[otherkey3], 
    AVG([value1]) AS [avg_value1], 
    AVG([value2]) AS [avg_value2] 
FROM [data_table] 
CROSS JOIN moving_avg 
GROUP BY [otherkey1],[otherkey2],[otherkey3],DATEADD(day,[lag],[date]) 
ORDER BY [otherkey1],[otherkey2],[otherkey3],[reference_date]; 
+0

@ user1885733 유효하지 않은 PostgreSQL 구문 ('# TestDW'은 유효한 테이블 이름이 아니며'datead()'가 유효한 PostgerSQL 함수가 아님)이 허용 될 수 있는지 궁금합니다. –