QUERY PLAN
Aggregate (cost=45.73..45.74 rows=1 width=8)
-> Sort (cost=45.71..45.72 rows=1 width=244)
Sort Key: project.bargain_date DESC
-> GroupAggregate (cost=45.68..45.70 rows=1 width=244)
Group Key: esosps.id, project.id
-> Sort (cost=45.68..45.69 rows=1 width=12)
Sort Key: esosps.id, project.id
-> Nested Loop (cost=27.81..45.67 rows=1 width=12)
-> Nested Loop (cost=27.53..37.36 rows=1 width=16)
-> Hash Join (cost=27.25..33.73 rows=1 width=12)
Hash Cond: (t.id = esosps.erp_sales_outbound_id)
-> Seq Scan on tbl_erp_sales_outbounds t (cost=0.00..5.92 rows=146 width=8)
Filter: (status = 2)
-> Hash (cost=27.24..27.24 rows=1 width=12)
-> Hash Join (cost=11.69..27.24 rows=1 width=12)
Hash Cond: (eipss.erp_sales_outbound_spent_product_id = esosps.id)
-> Seq Scan on tbl_erp_inventory_product_spents eipss (cost=0.00..14.06 rows=562 width=4)
Filter: (outbound > '0'::numeric)
-> Hash (cost=11.68..11.68 rows=1 width=12)
-> Seq Scan on tbl_erp_sales_outbound_spent_products esosps (cost=0.00..11.68 rows=1 width=12)
Filter: (product_id = 2238)
-> Index Scan using tbl_projects_pkey on tbl_projects project (cost=0.28..3.39 rows=1 width=8)
Index Cond: (id = t.project_id)
Filter: ((bargain_date >= '2026-01-01'::date) AND (bargain_date <= '2026-12-31'::date) AND (((budget > collected) AND (project_status = ANY ('{3,-1}'::integer[]))) OR ((budget <= collected) AND (project_status = 3))) AND (created_by = ANY ('{1001,5049,5500,5301,5499,5022,5209,5026,5293,5309,5356,5329,5299,5303,5302,5332,5047,1026,5096,5070,5448,5420,1029,5037,5087,1008,5048,5043,5045,5230,5031,5088,5208,1003,5467,5294,5357,5044,1030,5076,5300,5027,5089,5311,5066,5069,5364,1009,5295,1013,5128,5203,1025,5032,5075,5476,1004,5072,5033,5359,5412,5409,5229,1005,5304,5449,5358,1006,5093}'::integer[])))
-> Index Only Scan using tbl_products_pkey on tbl_products p (cost=0.28..8.30 rows=1 width=4)
Index Cond: (id = 2238)