2014-04-17 82 views
0

我有两个表。第一个是带有模式标识和名称的命名页面。第二个表是page_counts。它具有模式ID,page_id(页表的外键),视图和日期。基本上,我正在追踪一些页面每一天获得的观看次数。每天的观看次数是累积的,所以它总是等于或大于前一天的观看次数。按日期范围的Postgres聚合函数

我希望能够跟踪每周页面获得多少个视图。这取决于采取最近一天的观点,并从那天前一周的总观看次数中减去。我希望能够在多个星期内完成此操作,因此请查找过去一周的总观看次数,从上周开始的总次数以及返回一周以上的次数等。

我查看了postgres日期功能,但没有太大意义。感谢您的帮助

回答

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窗口函数获取该页面上一周的视图数。