QUERY PLAN
Aggregate (cost=345.48..345.49 rows=1 width=8)
-> Sort (cost=344.91..345.00 rows=38 width=913)
Sort Key: sc.bargain_date DESC, sc.created_at DESC
-> GroupAggregate (cost=342.20..343.91 rows=38 width=913)
Group Key: u.id, sc.id, scp.collected, sci.invoiced, od.overdue_paid_amount, od.overdue_collected, od.remind_date, (CASE WHEN ((u.budget - scp.collected) > '0'::numeric) THEN CASE WHEN (((od.overdue_paid_amount)::numeric - od.overdue_collected) > '0'::numeric) THEN od.max_date ELSE mind.min_date END ELSE NULL::date END)
-> Sort (cost=342.20..342.29 rows=38 width=132)
Sort Key: u.id, sc.id, scp.collected, sci.invoiced, od.overdue_paid_amount, od.overdue_collected, od.remind_date, (CASE WHEN ((u.budget - scp.collected) > '0'::numeric) THEN CASE WHEN (((od.overdue_paid_amount)::numeric - od.overdue_collected) > '0'::numeric) THEN od.max_date ELSE mind.min_date END ELSE NULL::date END)
-> Hash Left Join (cost=132.10..341.20 rows=38 width=132)
Hash Cond: (sc.id = mind.id)
-> Hash Left Join (cost=97.59..306.11 rows=38 width=138)
Hash Cond: (sc.id = od.id)
-> Hash Left Join (cost=62.01..270.43 rows=38 width=90)
Hash Cond: (sc.id = sci.project_id)
-> Hash Left Join (cost=32.47..240.75 rows=38 width=58)
Hash Cond: (sc.id = scp.project_id)
-> Hash Left Join (cost=5.59..213.71 rows=38 width=26)
Hash Cond: (c.sales_rep = sgr.sales_id)
-> Nested Loop Left Join (cost=3.54..211.31 rows=38 width=30)
Filter: ((c.sales_rep = ANY ('{5049,5301,5022,5209,5026,5293,5309,5356,5329,5299,5303,5302,5332,5047,1026,5096,5070,5420,1029,1001,5037,5087,1008,5048,5043,5045,5230,5031,5088,5208,1003,5294,5357,5044,1030,5076,5300,5027,5089,5311,5066,5069,5364,1009,5295,1013,5128,5203,1025,5032,5075,1004,5072,5033,5359,5409,5412,5229,1005,5304,5358,1006,5093}'::integer[])) OR (c.sales_rep IS NULL))
-> Hash Join (cost=3.26..179.33 rows=50 width=30)
Hash Cond: (sc.id = u.project_id)
-> Seq Scan on tbl_projects sc (cost=0.00..170.06 rows=1469 width=20)
Filter: (project_status = 3)
-> Hash (cost=2.07..2.07 rows=95 width=14)
-> Seq Scan on tbl_project_used_clients u (cost=0.00..2.07 rows=95 width=14)
Filter: ((id IS NOT NULL) AND (used_client IS NOT NULL))
-> Index Scan using tbl_clients_pkey on tbl_clients c (cost=0.28..0.55 rows=1 width=8)
Index Cond: (sc.client_id = id)
-> Hash (cost=1.47..1.47 rows=47 width=4)
-> Seq Scan on tbl_sales_group_relationships sgr (cost=0.00..1.47 rows=47 width=4)
-> Hash (cost=25.54..25.54 rows=107 width=36)
-> Subquery Scan on scp (cost=23.13..25.54 rows=107 width=36)
-> HashAggregate (cost=23.13..24.47 rows=107 width=40)
Group Key: t0.id
-> Hash Right Join (cost=3.41..20.38 rows=550 width=40)
Hash Cond: (t1.project_used_client_id = t0.id)
-> Seq Scan on tbl_project_used_client_payments t1 (cost=0.00..15.50 rows=550 width=36)
-> Hash (cost=2.07..2.07 rows=107 width=8)
-> Seq Scan on tbl_project_used_clients t0 (cost=0.00..2.07 rows=107 width=8)
-> Hash (cost=28.20..28.20 rows=107 width=36)
-> Subquery Scan on sci (cost=25.79..28.20 rows=107 width=36)
-> HashAggregate (cost=25.79..27.13 rows=107 width=40)
Group Key: t0_1.id
-> Hash Right Join (cost=3.41..22.29 rows=700 width=40)
Hash Cond: (t1_1.project_used_client_id = t0_1.id)
-> Seq Scan on tbl_project_used_client_invoices t1_1 (cost=0.00..17.00 rows=700 width=36)
-> Hash (cost=2.07..2.07 rows=107 width=8)
-> Seq Scan on tbl_project_used_clients t0_1 (cost=0.00..2.07 rows=107 width=8)
-> Hash (cost=34.24..34.24 rows=107 width=52)
-> Subquery Scan on od (cost=31.84..34.24 rows=107 width=52)
-> HashAggregate (cost=31.84..33.17 rows=107 width=52)
Group Key: t0_2.project_id
-> Hash Left Join (cost=3.41..30.50 rows=107 width=44)
Hash Cond: (scpcrd.project_used_client_id = t0_2.id)
-> Seq Scan on tbl_project_used_client_payment_collection_remind_dates scpcrd (cost=0.00..26.80 rows=107 width=44)
Filter: ((remind_date <= '2025-07-05'::date) AND (COALESCE(paid_amount, '0'::numeric) < (amount)::numeric))
-> Hash (cost=2.07..2.07 rows=107 width=8)
-> Seq Scan on tbl_project_used_clients t0_2 (cost=0.00..2.07 rows=107 width=8)
-> Hash (cost=33.17..33.17 rows=107 width=8)
-> Subquery Scan on mind (cost=31.03..33.17 rows=107 width=8)
-> HashAggregate (cost=31.03..32.10 rows=107 width=8)
Group Key: t0_3.project_id
-> Hash Left Join (cost=3.41..30.50 rows=107 width=8)
Hash Cond: (scpcrd_1.project_used_client_id = t0_3.id)
-> Seq Scan on tbl_project_used_client_payment_collection_remind_dates scpcrd_1 (cost=0.00..26.80 rows=107 width=8)
Filter: ((remind_date > '2025-07-05'::date) AND (COALESCE(paid_amount, '0'::numeric) >= (amount)::numeric))
-> Hash (cost=2.07..2.07 rows=107 width=8)
-> Seq Scan on tbl_project_used_clients t0_3 (cost=0.00..2.07 rows=107 width=8)