Postgres按日期范围汇总功能

时间:2014-04-17 06:11:17

标签: sql postgresql

我有两张桌子。第一个是带有架构标识和名称的命名页面。第二个表是page_counts。它具有架构标识,page_id(页面表的外键),视图和日期。基本上,我正在跟踪一些页面每天获得的视图数量。每天的观看次数是累积的,因此它总是等于或大于前一天的观看次数。

我希望能够跟踪每周页面的浏览量。这取决于采取最近一天的观点,并从那天前一周的总观看次数中减去。我希望能够在多个星期内完成这项工作,因此找出过去一周的总观看次数,从上周开始的总数以及再往返一周等等。

我查看了postgres日期函数,但没有多大意义。谢谢你的帮助

1 个答案:

答案 0 :(得分: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窗口函数获取该页面上一周的观看次数。