我有数据象下面这样:如何总结postgresql中重叠数据的数据?
t_id s_id date_1 date_2 T_count expected Result
N1 1-1I 2012-12-11 2013-01-22 0.21327014218009478622 4.7
N2 1-1I 2011-08-03 2011-11-10 3.8461538461538462 4.7
N3 1-1I 2013-12-05 2013-12-20 1.6935483870967742 4.7
N4 1-1I 2014-12-08 2015-06-25 4.7727272727272727 4.7
N5 1-1I 2017-03-08 (null) (null) 4.7
N6 1-I6 2013-04-11 2013-10-03 0.61538461538461538462 0.97
N7 1-I6 2011-09-27 2013-06-20 0.37325038880248833651 0.97
,我想计算t_count值的总和,如果日期1和date2相同S_ID的针对不同T_ID其他为同一S_ID返回最大值相同S_ID重叠。
现在我正在使用的postgres代码正在执行值的总和,不管重叠,请你可以建议。
有些情况下,某些数据可能会重叠,有些情况下不会出现给定的s_id,因此多年来它会重叠,我们需要一些数据并找出所有情况的最大值,如个体,重叠和给一个最大的答案。
select t1.s_id,sum(t1.t_count)
from abc t1
JOIN abc t2
ON daterange(t1.date_1, t1.date_2, '[]')
&& daterange(t1.date_1, t1.date_2, '[]')
and t1.s_id = t2.s_id
GROUP BY t1.s_id
你应该只参加在S_ID,并检查是否在'案重叠when' - 但我不明白为什么你建立日期范围只T1日期 - 什么?应该带些什么..或者它只是一个错字重叠? –
如果某个's_id'的某些时间间隔重叠,结果应该是什么?例如,如果您将'N3'的'date_1'更改为'2013-01-05',结果如何? –
看看这个答案https://dba.stackexchange.com/questions/89864/maximum-sum-of-overlapping-ranges – raphael