那这个呢:
WITH points AS ( SELECt "startDate" AS p FROM temp_period UNIOn SELECt "endDate" FROM temp_period ), inter AS ( SELECt daterange( lag(p) OVER (ORDER BY p), p ) i FROM points ), overlap AS ( SELECt DISTINCT i FROM inter CROSS JOIN temp_period WHERe i <@ daterange("startDate", "endDate") )SELECt sum(age(upper(i), lower(i)))FROM overlap;对于您的数据,它将返回:



