| HashAggregate (cost=172.97..173.03 rows=1 width=4) |
| Group Key: (date_trunc('day'::text, (generate_series((GREATEST((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)::date, '2026-05-01'::date))::timestamp with time zone, (LEAST((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)::date, '2026-05-31'::date))::timestamp with time zone, '1 day'::interval))))::date |
| -> Result (cost=4.54..170.47 rows=1000 width=4) |
| -> ProjectSet (cost=4.54..115.47 rows=1000 width=8) |
| -> Bitmap Heap Scan on tbl_schedules (cost=4.54..110.43 rows=1 width=33) |
| Recheck Cond: (created_by = 1000) |
| Filter: (((start_at IS NOT NULL) OR (end_at IS NOT NULL)) AND (alarm_before IS NOT NULL) AND (CASE WHEN (start_at IS NULL) THEN CASE WHEN (end_at < now()) THEN CASE WHEN is_complete THEN created_at ELSE end_at END ELSE CASE WHEN is_complete THEN created_at ELSE now() END END ELSE start_at END <= '2026-05-31 00:00:00+08'::timestamp with time zone) AND ((CASE WHEN (start_at IS NULL) THEN CASE WHEN (end_at < now()) THEN CASE WHEN is_complete THEN created_at ELSE end_at END ELSE CASE WHEN is_complete THEN created_at ELSE now() END END ELSE start_at END - alarm_before) > now()) AND (CASE WHEN (end_at IS NULL) THEN CASE WHEN (start_at > now()) THEN start_at ELSE CASE WHEN is_complete THEN complete_at ELSE now() END END ELSE CASE WHEN ((start_at IS NULL) AND (end_at < now())) THEN CASE WHEN is_complete THEN complete_at ELSE now() END ELSE end_at END END >= '2026-05-01 00:00:00+08'::timestamp with time zone)) |
| -> Bitmap Index Scan on tbl_schedules_created_by_idx (cost=0.00..4.54 rows=34 width=0) |
| Index Cond: (created_by = 1000) |