Unique (cost=60949.40..60951.90 rows=200 width=16) |
-> Sort (cost=60949.40..60949.90 rows=200 width=16) |
Sort Key: (date(tt.dt)) DESC, (CASE WHEN (count(c.id) <> 0) THEN true ELSE false END), (CASE WHEN (count(tbl_schedules.id) <> 0) THEN true ELSE false END), (CASE WHEN (count(id) <> 0) THEN true ELSE false END) |
-> HashAggregate (cost=60937.25..60941.75 rows=200 width=16) |
Group Key: tt.dt |
-> Nested Loop Left Join (cost=44.98..59106.59 rows=146453 width=20) |
Join Filter: ((((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone >= c.start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone <= c.end_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= c.start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= c.start_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= c.end_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= c.end_at))) |
-> Nested Loop Left Join (cost=44.98..783.79 rows=1000 width=16) |
Join Filter: ((((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone >= CASE WHEN (tbl_schedules.start_at IS NULL) THEN CASE WHEN (tbl_schedules.end_at < now()) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE tbl_schedules.end_at END ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE now() END END ELSE tbl_schedules.start_at END) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone <= CASE WHEN (tbl_schedules.end_at IS NULL) THEN CASE WHEN (tbl_schedules.start_at > now()) THEN tbl_schedules.start_at ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END END ELSE CASE WHEN ((tbl_schedules.start_at IS NULL) AND (tbl_schedules.end_at < now())) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END ELSE tbl_schedules.end_at END END)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= CASE WHEN (tbl_schedules.start_at IS NULL) THEN CASE WHEN (tbl_schedules.end_at < now()) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE tbl_schedules.end_at END ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE now() END END ELSE tbl_schedules.start_at END) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= CASE WHEN (tbl_schedules.start_at IS NULL) THEN CASE WHEN (tbl_schedules.end_at < now()) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE tbl_schedules.end_at END ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE now() END END ELSE tbl_schedules.start_at END)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= CASE WHEN (tbl_schedules.end_at IS NULL) THEN CASE WHEN (tbl_schedules.start_at > now()) THEN tbl_schedules.start_at ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END END ELSE CASE WHEN ((tbl_schedules.start_at IS NULL) AND (tbl_schedules.end_at < now())) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END ELSE tbl_schedules.end_at END END) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= CASE WHEN (tbl_schedules.end_at IS NULL) THEN CASE WHEN (tbl_schedules.start_at > now()) THEN tbl_schedules.start_at ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END END ELSE CASE WHEN ((tbl_schedules.start_at IS NULL) AND (tbl_schedules.end_at < now())) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END ELSE tbl_schedules.end_at END END))) |
-> Nested Loop Left Join (cost=0.02..125.02 rows=1000 width=12) |
Join Filter: ((((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone >= start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone <= end_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= start_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= end_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= end_at))) |
-> Function Scan on generate_series tt (cost=0.02..10.02 rows=1000 width=8) |
-> Result (cost=0.00..0.00 rows=0 width=20) |
One-Time Filter: false |
-> Materialize (cost=44.97..473.77 rows=1 width=37) |
-> Result (cost=44.97..473.77 rows=1 width=37) |
One-Time Filter: false |
-> Bitmap Heap Scan on tbl_schedules (cost=44.97..473.77 rows=1 width=37) |
Recheck Cond: (created_by = 1005) |
-> Bitmap Index Scan on tbl_schedules_created_by_idx (cost=0.00..44.96 rows=2224 width=0) |
Index Cond: (created_by = 1005) |
-> Materialize (cost=0.00..514.04 rows=492 width=20) |
-> Seq Scan on tbl_calendars c (cost=0.00..511.58 rows=492 width=20) |
Filter: ((start_at IS NOT NULL) AND (end_at IS NOT NULL) AND (created_by = 1005)) |