I would consider this a sessionize problem.
The one sticking point I see is the 2019-09-06 to the 2019-05-20. That is 109 days, which would fall into your 110 day criteria.
If you are looking to make static 110 days intervals based on a minimum date, you should be able to use a date dimension table to establish your start and stops of min dates that fit your 110 day restriction.
I put together a SQL only solution below for what I thought you might be looking for. You could perform another pass on this and daisy chain these sessions together to create a longer than 110 day session if there are events that connect them together.
Hope this helps!
select
event_data.id,
event_data.class,
event_data.date_dt,
min(event_data_2.date_dt) as starting_dt,
event_data.date_dt - min(event_data_2.date_dt) as days_between
from
(
select
'1234' as id,
'XYZ' as class,
'2019-02-04'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-05-20'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-09-06'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-09-11'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-09-12'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-09-12'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-11-12'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-11-20'::date as date_dt
union all
select
'4567' as id,
'XYZ' as class,
'2019-03-02'::date as date_dt
union all
select
'4567' as id,
'XYZ' as class,
'2019-05-05'::date as date_dt
union all
select
'4567' as id,
'XYZ' as class,
'2019-10-02'::date as date_dt
union all
select
'4567' as id,
'XYZ' as class,
'2019-11-20'::date as date_dt
) event_data
inner join
(
select
'1234' as id,
'XYZ' as class,
'2019-02-04'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-05-20'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-09-06'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-09-11'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-09-12'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-09-12'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-11-12'::date as date_dt
union all
select
'1234' as id,
'XYZ' as class,
'2019-11-20'::date as date_dt
union all
select
'4567' as id,
'XYZ' as class,
'2019-03-02'::date as date_dt
union all
select
'4567' as id,
'XYZ' as class,
'2019-05-05'::date as date_dt
union all
select
'4567' as id,
'XYZ' as class,
'2019-10-02'::date as date_dt
union all
select
'4567' as id,
'XYZ' as class,
'2019-11-20'::date as date_dt
) event_data_2 on (event_data.id = event_data_2.id and event_data.class = event_data_2.class and ((event_data.date_dt - event_data_2.date_dt) <= 110))
group by
event_data.id,
event_data.class,
event_data.date_dt