【发布时间】:2019-07-08 17:02:09
【问题描述】:
我有一个名为 Position 的表,在这个表中,我有以下内容,包括日期 (yyyy-mm-dd),下面是就业日期的简化视图
id, person_id, start_date, end_date , title
1 , 1 , 2001-12-01, 2002-01-31, 'admin'
2 , 1 , 2002-02-11, 2002-03-31, 'admin'
3 , 1 , 2002-02-15, 2002-05-31, 'sales'
4 , 1 , 2002-06-15, 2002-12-31, 'ops'
我希望能够计算就业差距,假设某些日期重叠以为 id=1 的人生成以下输出
person_id, start_date, end_date , last_position_id, gap_in_days
1 , 2002-02-01, 2002-02-10, 1 , 10
1 , 2002-06-01, 2002-06-14, 3 , 14
我查看了许多解决方案、UNIONS、物化视图、生成日历日期范围的表等。我真的不确定什么是最好的方法。是否有一个查询可以让我完成这项工作?
【问题讨论】:
-
你是什么意思
assuming some of the dates overlap? -
什么是
last_position_id? -
一个人可以有两个职位,因此日期重叠
-
last_position_id 是间隙前的位置的id
标签: postgresql date-range gaps-and-islands