如何获取PostgreSQL中每一行在特定周期内的行数?
我在PostgreSQL中有一个表,我想得到每一行在每一行日期前30天内的行数(包括每一时刻该行的事件)。例如:如何获取PostgreSQL中每一行在特定周期内的行数?,sql,postgresql,cumulative-sum,Sql,Postgresql,Cumulative Sum,我在PostgreSQL中有一个表,我想得到每一行在每一行日期前30天内的行数(包括每一时刻该行的事件)。例如: Event. Date A. 2019-02-13 B. 2019-02-15 C. 2019-03-17 D. 2019-03-19 E. 2019-04-22 F.
Event. Date
A. 2019-02-13
B. 2019-02-15
C. 2019-03-17
D. 2019-03-19
E. 2019-04-22
F. 2019-04-23
G. 2019-04-30
预期产出:
Event. Date. Events occurred in last month
A. 2019-02-13. 1
B. 2019-02-15. 2
C. 2019-03-17. 1
D. 2019-03-19. 2
E. 2019-04-22. 1
F. 2019-04-23. 2
G. 2019-04-30. 3
例如,对于事件B,上个月有两个事件:B本身和A,因为它发生在2019-02-15不到30天的时间内。对于事件G,有三个事件,因为从上个月(2019-03-30)开始,有三个事件(G本身、E和F)
如何在PostgreSQL查询中实现这一点
关于将窗口函数与窗口子句一起使用:
select e.*,
count(*) over (order by date range between interval '30 day' preceding and current row)
from events e;
在您的示例数据中,每个事件有一个条目。查看
计数
和分组依据