2014-04-17 2 views
0

두 개의 테이블이 있습니다. 첫 번째 페이지는 스키마 ID와 이름이있는 페이지입니다. 두 번째 테이블은 page_counts입니다. 스키마 ID, page_id (페이지 테이블에 대한 외부 키),보기 및 날짜가 있습니다. 기본적으로 몇 페이지가 매일 매일 얼마나 많은 조회수를 기록하는지 추적하고 있습니다. 매일의 조회수는 누적되므로 전날의 조회수와 항상 같거나 커집니다.기간별 Postgres 집계 기능

주당 페이지 조회수를 추적 할 수 있기를 원합니다. 이는 가장 최근의 조회수를 취하고 그 날로부터 1 주일 전 조회수를 뺍니다. 나는 여러 주 동안이 작업을 수행 할 수 있기를 원하므로 지난 주 총 조회수를 알아보고 지난 주부터 시작해서 다시 한 번 주간으로 돌아갑니다.

나는 포스트그레스를 들여다 보았습니다. 날짜 기능이 있지만별로 의미가 없습니다. 그것은 어렵다 도움

답변

0

에 대한 감사는 테스트 할 데이터없이 그것을 할 수 있지만 페이지와 주 뷰의 해당하는 최대 수를 얻어서이

select page_id, week, 
    views - lag(views, 1, 0) over (partition by page_id order by week) as views 
from (
    select page_id, date_trunc('week', "date") as week, max(views) as views 
    from page_counts pc 
    group by 1, 2 
) s 
order by 1, 2 desc 

하위 쿼리 같은 단지 그룹을해야합니다.

그런 다음 lag 창 함수는 해당 페이지의 지난주의 뷰 수를 가져옵니다.