| Limit (cost=96483.89..96486.04 rows=20 width=509) |
| -> Unique (cost=96483.89..96710.82 rows=2111 width=509) |
| -> Sort (cost=96483.89..96489.17 rows=2111 width=509) |
| Sort Key: p.updated_at DESC, p.id, p.client_id, p.project_status, p.project_progress, p.budget, p.profit_pct, p.bargain_date, p.description, p.created_by, p.created_at, p.engineer_id, p.project_title, p.collected, p.status_updated_at, p.success_rate, p.comment, p.contract_type, p.progress_updated_at, p.forecast_updated_at, p.end_at, p.pinyin_shortcut, p.creator, p.used_client, p.from_contact, p.total_contact_point, p.paid_contact_point, p.project_product_version_id, p.is_sales_order_ready, p.collected_plan, p.change_status_to, p.is_verify, (((p.budget / '100'::numeric) * p.profit_pct)), ((now() - p.status_updated_at)), ((now() - p.progress_updated_at)), ((now() - p.forecast_updated_at)), ((date_part('epoch'::text, (now() - max(sl.end_at))) / '86400'::double precision)), (max(sl.end_at)), ((date_part('epoch'::text, (now() - max(arrive.end_at))) / '86400'::double precision)), (max(arrive.end_at)), (CASE WHEN (p.end_at IS NOT NULL) THEN (p.end_at - p.created_at) ELSE (now() - p.created_at) END), ((SubPlan 1)) |
| -> HashAggregate (cost=3937.19..96367.32 rows=2111 width=509) |
| Group Key: p.id |
| -> Merge Right Join (cost=2522.15..3638.80 rows=23871 width=365) |
| Merge Cond: (sl.project_id = p.id) |
| -> Index Scan using tbl_work_logs_project_id_idx on tbl_work_logs sl (cost=0.29..6294.15 rows=35733 width=12) |
| -> Sort (cost=2521.86..2527.13 rows=2111 width=357) |
| Sort Key: p.id |
| -> Hash Right Join (cost=594.97..2405.29 rows=2111 width=357) |
| Hash Cond: (arrive.client_id = c.id) |
| -> Seq Scan on tbl_work_logs arrive (cost=0.00..1801.66 rows=682 width=12) |
| Filter: ((NOT is_draft) AND (location_in_id IS NOT NULL) AND (location_out_id IS NOT NULL) AND (client_id IS NOT NULL) AND (scenario_id = 1)) |
| -> Hash (cost=568.58..568.58 rows=2111 width=353) |
| -> Hash Left Join (cost=213.85..568.58 rows=2111 width=353) |
| Hash Cond: (p.client_id = c.id) |
| -> Bitmap Heap Scan on tbl_projects p (cost=79.89..429.07 rows=2111 width=349) |
| Recheck Cond: (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[])) |
| -> Bitmap Index Scan on tbl_projects_created_by_idx (cost=0.00..79.36 rows=2111 width=0) |
| Index Cond: (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[])) |
| -> Hash (cost=108.98..108.98 rows=1998 width=4) |
| -> Seq Scan on tbl_clients c (cost=0.00..108.98 rows=1998 width=4) |
| SubPlan 1 |
| -> Aggregate (cost=43.72..43.73 rows=1 width=32) |
| -> Seq Scan on tbl_invoices i (cost=0.00..43.71 rows=1 width=6) |
| Filter: (project_id = p.id) |