【问题标题】:Postgres aggregate function by date rangePostgres 按日期范围聚合函数
【发布时间】:2014-04-17 06:11:16
【问题描述】:

我有两张桌子。第一个是具有模式 id 和名称的命名页面。第二个表是 page_counts。它具有模式 id、page_id(页表的外键)、视图和日期。基本上,我正在跟踪某些页面每天获得的浏览量。每天的观看次数是累积的,因此它始终等于或大于前一天的观看次数。

我希望能够跟踪页面每周获得的浏览量。这归结为获取最近一天的视图并从中减去该天前一周的视图总数。我也希望能够在数周内完成此操作,因此找出过去一周的总观看次数、从上周开始的总观看次数以及再返回一周等。

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

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    没有数据测试很难做到,但应该是这样的

    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 窗口函数获取该页面上周的浏览量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-01
      • 2021-09-18
      • 2018-09-02
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多