QUERY PLAN
GroupAggregate (cost=1419.06..1419.08 rows=1 width=53)
Group Key: sub.id, sub.name
-> Sort (cost=1419.06..1419.06 rows=1 width=49)
Sort Key: sub.id, sub.name
-> Subquery Scan on sub (cost=1419.03..1419.05 rows=1 width=49)
-> Group (cost=1419.03..1419.04 rows=1 width=49)
Group Key: client.id, c.project_id
-> Sort (cost=1419.03..1419.03 rows=1 width=49)
Sort Key: client.id, c.project_id
-> Nested Loop Left Join (cost=1226.14..1419.02 rows=1 width=49)
-> Hash Join (cost=1225.86..1415.49 rows=1 width=8)
Hash Cond: (ca.case_id = c.id)
-> Seq Scan on tbl_case_assignments ca (cost=0.00..189.55 rows=30 width=4)
Filter: (engineer_id = 1001)
-> Hash (cost=1224.76..1224.76 rows=88 width=12)
-> Subquery Scan on c (cost=1223.44..1224.76 rows=88 width=12)
-> Group (cost=1223.44..1223.88 rows=88 width=285)
Group Key: c_1.id
-> Sort (cost=1223.44..1223.66 rows=88 width=12)
Sort Key: c_1.id
-> Hash Right Join (cost=1091.80..1220.60 rows=88 width=12)
Hash Cond: (cs.case_id = c_1.id)
-> Seq Scan on tbl_case_services cs (cost=0.00..110.12 rows=7112 width=4)
-> Hash (cost=1090.70..1090.70 rows=88 width=12)
-> Seq Scan on tbl_cases c_1 (cost=0.00..1090.70 rows=88 width=12)
Filter: ((project_id IS NOT NULL) AND (case_type = 1) AND (((case_status = 5) AND (closed_at >= '2025-01-01 00:00:00+08'::timestamp with time zone) AND (closed_at <= '2025-12-31 23:59:59+08'::timestamp with time zone)) OR ((case_status = ANY ('{3,1,2,4}'::integer[])) AND (start_at >= '2025-01-01 00:00:00+08'::timestamp with time zone) AND (start_at <= '2025-12-31 23:59:59+08'::timestamp with time zone))) AND ((deduct_points_from = ANY ('{1001,5049,5301,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,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,5449,5358,1006,5093}'::integer[])) OR (deduct_points_from IS NULL)))
-> Index Scan using tbl_clients_pkey on tbl_clients client (cost=0.28..3.52 rows=1 width=45)
Index Cond: (c.client_id = id)