의 나는 다음과 같은 테이블이 있다고 가정 해 봅시다 :PostgreSQL - 조건이있는 창 프레임은 어떻게 만듭니 까?
CREATE TABLE stock_prices (
stock TEXT NOT NULL,
date DATE NOT NULL,
price REAL NOT NULL,
UNIQUE (stock, date)
);
내가 이전 3 개월의 창에서 매일 각 주식의 최고 가격을 계산합니다.
내 stock_price
테이블에 공휴일과 주말을위한 "홀"이 있기 때문에 간단한 자체 조인을 date - INTERVAL(3 'MONTH')
으로 수행 할 수 없습니다. 비슷하게 순진한 창도 작동하지 않습니다.
SELECT
stock,
date,
LAST_VALUE(price) OVER (PARTITION BY stock ORDER BY date ROWS 90 PRECEDING)
FROM stock_prices
나는 현재 행에 기반한 조건을 가진 창 프레임을 거의 원합니다. PostgreSQL에서도 가능합니까?
하나의 해결책은'generate_series()'를 사용하여 추가 행을 생성하는 것입니다. –
문제 없음 : * 날짜 범위에 * 구멍 *이있는 경우 * 구멍 *에 최대 가격을 포함 할 수 없습니다. – joop
dba.se : [창 함수를 사용하는 날짜 범위 롤링 합계] (http://dba.stackexchange.com/q/114403/57105)에서 논의되었습니다. dba.se의 질문은 SQL Server를 사용하지만 최신 Postgres와 최신 SQL Server는 Window 기능과 관련된 기능이 동일하므로 응답을 Postgres에 최소한의 변경만으로 적용 할 수 있습니다. 이 두 가지 모두'RANGE' 창 프레임을 지원하지 않습니다.이 프레임 프레임은이 질문에서 중요합니다. 하위 쿼리를 사용하거나 @klin이 보여주는 날짜의 구멍을 채 웁니다. –