QUERY PLAN
Limit (cost=75714.16..75714.26 rows=40 width=936)
-> Sort (cost=75714.06..75719.09 rows=2013 width=936)
Sort Key: c.erp_labor_cost_amount DESC NULLS LAST, c.updated_at DESC
-> Subquery Scan on c (cost=3699.61..75640.37 rows=2013 width=936)
-> GroupAggregate (cost=3699.61..75579.98 rows=2013 width=840)
Group Key: c_1.id
-> Merge Left Join (cost=3699.61..75101.89 rows=2013 width=936)
Merge Cond: (c_1.id = scs.client_id)
-> Merge Left Join (cost=3591.76..74983.18 rows=2013 width=872)
Merge Cond: (c_1.id = "*SELECT* 1".client_id)
-> Merge Left Join (cost=2111.09..2212.35 rows=2013 width=864)
Merge Cond: (c_1.id = esgs.client_id)
-> Merge Left Join (cost=2082.23..2177.77 rows=2013 width=832)
Merge Cond: (c_1.id = t_9.client_id)
-> Merge Left Join (cost=1978.55..2068.70 rows=2013 width=800)
Merge Cond: (c_1.id = t_8.client_id)
-> Merge Left Join (cost=1977.41..2062.49 rows=2013 width=768)
Merge Cond: (c_1.id = ectt.client_id)
-> Merge Left Join (cost=1846.89..1921.34 rows=2013 width=736)
Merge Cond: (c_1.id = t_6.client_id)
-> Merge Left Join (cost=1315.71..1384.07 rows=2013 width=704)
Merge Cond: (c_1.id = eoi.client_id)
-> Merge Left Join (cost=1313.14..1376.44 rows=2013 width=672)
Merge Cond: (c_1.id = c_2.client_id)
-> Merge Left Join (cost=1127.99..1184.04 rows=2013 width=640)
Merge Cond: (c_1.id = t_3.client_id)
-> Merge Left Join (cost=1123.95..1174.87 rows=2013 width=608)
Merge Cond: (c_1.id = t_2.client_id)
-> Sort (cost=849.00..854.03 rows=2013 width=600)
Sort Key: c_1.id
-> Hash Left Join (cost=617.82..738.54 rows=2013 width=600)
Hash Cond: (c_1.id = ecctcpc.client_id)
-> Hash Left Join (cost=31.40..146.83 rows=2013 width=568)
Hash Cond: (c_1.id = o.client_id)
-> Seq Scan on tbl_clients c_1 (cost=0.00..110.13 rows=2013 width=504)
-> Hash (cost=30.45..30.45 rows=76 width=68)
-> Subquery Scan on o (cost=28.55..30.45 rows=76 width=68)
-> HashAggregate (cost=28.55..29.69 rows=76 width=68)
Group Key: t.client_id
-> Hash Right Join (cost=10.69..24.67 rows=518 width=13)
Hash Cond: (eipss.erp_sales_outbound_id = t.id)
-> Seq Scan on tbl_erp_inventory_product_spents eipss (cost=0.00..12.51 rows=551 width=13)
-> Hash (cost=8.90..8.90 rows=143 width=8)
-> Seq Scan on tbl_erp_sales_outbounds t (cost=0.00..8.90 rows=143 width=8)
Filter: ((client_id IS NOT NULL) AND (status = 2))
-> Hash (cost=583.92..583.92 rows=200 width=36)
-> Subquery Scan on ecctcpc (cost=579.42..583.92 rows=200 width=36)
-> HashAggregate (cost=579.42..581.92 rows=200 width=36)
Group Key: cpc.client_id
-> Hash Join (cost=550.60..574.10 rows=1064 width=36)
Hash Cond: (cpc.erp_cash_cost_ticket_id = t_1.id)
-> Seq Scan on tbl_erp_cash_cost_ticket_client_project_costs cpc (cost=0.00..20.70 rows=1065 width=40)
Filter: (client_id IS NOT NULL)
-> Hash (cost=444.86..444.86 rows=8459 width=4)
-> Seq Scan on tbl_erp_cash_cost_tickets t_1 (cost=0.00..444.86 rows=8459 width=4)
Filter: (status = 2)
-> GroupAggregate (cost=274.94..296.30 rows=867 width=12)
Group Key: t_2.client_id
-> Sort (cost=274.94..279.17 rows=1691 width=8)
Sort Key: t_2.client_id
-> Seq Scan on tbl_projects t_2 (cost=0.00..184.28 rows=1691 width=8)
Filter: ((client_id IS NOT NULL) AND (project_status = 3))
-> GroupAggregate (cost=4.05..4.10 rows=2 width=36)
Group Key: t_3.client_id
-> Sort (cost=4.05..4.06 rows=3 width=9)
Sort Key: t_3.client_id
-> Seq Scan on tbl_erp_cost_tickets t_3 (cost=0.00..4.03 rows=3 width=9)
Filter: ((client_id IS NOT NULL) AND (status = 2))
-> GroupAggregate (cost=185.15..186.19 rows=52 width=36)
Group Key: c_2.client_id
-> Sort (cost=185.15..185.28 rows=52 width=9)
Sort Key: c_2.client_id
-> Hash Join (cost=4.94..183.67 rows=52 width=9)
Hash Cond: (c_2.id = t_4.contact_id)
-> Seq Scan on tbl_contacts c_2 (cost=0.00..139.84 rows=3416 width=8)
Filter: (client_id IS NOT NULL)
-> Hash (cost=4.03..4.03 rows=73 width=9)
-> Seq Scan on tbl_erp_cost_tickets t_4 (cost=0.00..4.03 rows=73 width=9)
Filter: (status = 2)
-> Sort (cost=2.57..2.57 rows=2 width=36)
Sort Key: eoi.client_id
-> Subquery Scan on eoi (cost=2.51..2.56 rows=2 width=36)
-> HashAggregate (cost=2.51..2.54 rows=2 width=36)
Group Key: t_5.client_id
-> Seq Scan on tbl_erp_other_income_tickets t_5 (cost=0.00..2.50 rows=3 width=10)
Filter: ((client_id IS NOT NULL) AND (status = 2))
-> GroupAggregate (cost=531.18..531.68 rows=25 width=36)
Group Key: t_6.client_id
-> Sort (cost=531.18..531.24 rows=25 width=9)
Sort Key: t_6.client_id
-> Hash Right Join (cost=507.09..530.60 rows=25 width=9)
Hash Cond: (cpc_1.erp_cash_cost_ticket_id = t_6.id)
Filter: (cpc_1.id IS NULL)
-> Seq Scan on tbl_erp_cash_cost_ticket_client_project_costs cpc_1 (cost=0.00..20.70 rows=1070 width=8)
-> Hash (cost=444.86..444.86 rows=4978 width=13)
-> Seq Scan on tbl_erp_cash_cost_tickets t_6 (cost=0.00..444.86 rows=4978 width=13)
Filter: ((client_id IS NOT NULL) AND (status = 2))
-> Sort (cost=130.52..131.45 rows=373 width=36)
Sort Key: ectt.client_id
-> Subquery Scan on ectt (cost=106.20..114.59 rows=373 width=36)
-> HashAggregate (cost=106.20..110.86 rows=373 width=36)
Group Key: t_7.client_id
-> Seq Scan on tbl_erp_collect_tickets t_7 (cost=0.00..95.42 rows=2154 width=10)
Filter: ((client_id IS NOT NULL) AND (status = 2))
-> GroupAggregate (cost=1.14..1.16 rows=1 width=36)
Group Key: t_8.client_id
-> Sort (cost=1.14..1.14 rows=1 width=36)
Sort Key: t_8.client_id
-> Seq Scan on tbl_erp_cost_convert_tickets t_8 (cost=0.00..1.12 rows=1 width=36)
Filter: ((client_id IS NOT NULL) AND (status = 2))
-> GroupAggregate (cost=103.68..103.88 rows=7 width=36)
Group Key: t_9.client_id
-> Sort (cost=103.68..103.72 rows=15 width=10)
Sort Key: t_9.client_id
-> Seq Scan on tbl_erp_payment_tickets t_9 (cost=0.00..103.39 rows=15 width=10)
Filter: (is_payment_settle AND (client_id IS NOT NULL) AND (status = 2))
-> Sort (cost=28.87..28.98 rows=45 width=36)
Sort Key: esgs.client_id
-> Subquery Scan on esgs (cost=26.62..27.63 rows=45 width=36)
-> HashAggregate (cost=26.62..27.18 rows=45 width=36)
Group Key: t_10.client_id
-> Hash Right Join (cost=8.93..22.89 rows=497 width=13)
Hash Cond: (eipss_1.erp_sales_gift_id = t_10.id)
-> Seq Scan on tbl_erp_inventory_product_spents eipss_1 (cost=0.00..12.51 rows=551 width=13)
-> Hash (cost=7.54..7.54 rows=111 width=8)
-> Seq Scan on tbl_erp_sales_gifts t_10 (cost=0.00..7.54 rows=111 width=8)
Filter: ((client_id IS NOT NULL) AND (status = 2))
-> GroupAggregate (cost=1480.66..72761.30 rows=200 width=12)
Group Key: "*SELECT* 1".client_id
-> Sort (cost=1480.66..1487.79 rows=2853 width=65)
Sort Key: "*SELECT* 1".client_id
-> Hash Left Join (cost=151.44..1316.92 rows=2853 width=65)
Hash Cond: (("*SELECT* 1".engineer_id = payroll.user_id) AND ("*SELECT* 1".settle_month = payroll.settle_month))
-> Hash Left Join (cost=101.62..1252.13 rows=2853 width=37)
Hash Cond: ("*SELECT* 1".engineer_id = psrr.user_id)
-> Append (cost=99.14..1236.67 rows=2853 width=20)
-> Subquery Scan on "*SELECT* 1" (cost=99.14..447.64 rows=538 width=20)
-> Hash Right Join (cost=99.14..442.26 rows=538 width=280)
Hash Cond: (c_3.id = p.case_id)
Filter: (COALESCE(p.client_id, c_3.client_id) IS NOT NULL)
-> Seq Scan on tbl_cases c_3 (cost=0.00..267.14 rows=8514 width=8)
-> Hash (cost=92.38..92.38 rows=541 width=28)
-> Seq Scan on tbl_pre_sales p (cost=0.00..92.38 rows=541 width=28)
Filter: ((start_at IS NOT NULL) AND (end_at IS NOT NULL) AND (engineer_id IS NOT NULL) AND ((NOT is_draft) OR (is_draft IS NULL)) AND (end_at > start_at))
-> Subquery Scan on "*SELECT* 2" (cost=372.95..789.03 rows=2315 width=20)
-> Hash Join (cost=372.95..765.88 rows=2315 width=280)
Hash Cond: (i.case_id = c_4.id)
Join Filter: (COALESCE(i.client_id, c_4.client_id) IS NOT NULL)
-> Seq Scan on tbl_implement_records i (cost=0.00..357.85 rows=2340 width=24)
Filter: ((arrived_at IS NOT NULL) AND (left_at IS NOT NULL) AND ((NOT is_draft) OR (is_draft IS NULL)) AND (left_at > arrived_at))
-> Hash (cost=267.14..267.14 rows=8465 width=12)
-> Seq Scan on tbl_cases c_4 (cost=0.00..267.14 rows=8465 width=12)
Filter: (last_engineer IS NOT NULL)
-> Hash (cost=2.28..2.28 rows=16 width=21)
-> Hash Left Join (cost=1.07..2.28 rows=16 width=21)
Hash Cond: (psrr.punch_strategy_id = ps.id)
-> Seq Scan on tbl_punch_strategy_resource_rels psrr (cost=0.00..1.16 rows=16 width=8)
-> Hash (cost=1.03..1.03 rows=3 width=17)
-> Seq Scan on tbl_punch_strategies ps (cost=0.00..1.03 rows=3 width=17)
-> Hash (cost=46.82..46.82 rows=200 width=40)
-> Subquery Scan on payroll (cost=42.32..46.82 rows=200 width=40)
-> HashAggregate (cost=42.32..44.82 rows=200 width=40)
Group Key: am.user_id, t_11.settle_month
-> Append (cost=12.96..40.31 rows=268 width=40)
-> HashAggregate (cost=12.96..15.56 rows=208 width=40)
Group Key: am.user_id, t_11.settle_month
-> Hash Join (cost=1.31..10.92 rows=271 width=11)
Hash Cond: (am.erp_wage_ticket_id = t_11.id)
-> Seq Scan on tbl_erp_wage_ticket_amounts am (cost=0.00..8.45 rows=345 width=11)
Filter: (user_id IS NOT NULL)
-> Hash (cost=1.18..1.18 rows=11 width=8)
-> Seq Scan on tbl_erp_wage_tickets t_11 (cost=0.00..1.18 rows=11 width=8)
Filter: (status = 2)
-> HashAggregate (cost=9.96..10.28 rows=26 width=40)
Group Key: am_1.user_id, t_12.settle_month
-> Hash Join (cost=1.14..9.75 rows=27 width=11)
Hash Cond: (am_1.erp_social_insurance_id = t_12.id)
-> Seq Scan on tbl_erp_social_insurance_amounts am_1 (cost=0.00..7.67 rows=267 width=11)
Filter: (user_id IS NOT NULL)
-> Hash (cost=1.12..1.12 rows=1 width=8)
-> Seq Scan on tbl_erp_social_insurances t_12 (cost=0.00..1.12 rows=1 width=8)
Filter: (status = 2)
-> HashAggregate (cost=8.24..8.57 rows=26 width=40)
Group Key: am_2.user_id, t_13.settle_month
-> Hash Join (cost=1.10..8.02 rows=30 width=11)
Hash Cond: (am_2.erp_provident_fund_id = t_13.id)
-> Seq Scan on tbl_erp_provident_fund_amounts am_2 (cost=0.00..6.11 rows=211 width=11)
Filter: (user_id IS NOT NULL)
-> Hash (cost=1.09..1.09 rows=1 width=8)
-> Seq Scan on tbl_erp_provident_funds t_13 (cost=0.00..1.09 rows=1 width=8)
Filter: (status = 2)
-> HashAggregate (cost=3.12..3.22 rows=8 width=40)
Group Key: am_3.user_id, t_14.settle_month
-> Hash Join (cost=1.11..3.06 rows=8 width=14)
Hash Cond: (am_3.erp_personal_tax_id = t_14.id)
-> Seq Scan on tbl_erp_personal_tax_amounts am_3 (cost=0.00..1.68 rows=68 width=14)
Filter: (user_id IS NOT NULL)
-> Hash (cost=1.10..1.10 rows=1 width=8)
-> Seq Scan on tbl_erp_personal_taxs t_14 (cost=0.00..1.10 rows=1 width=8)
Filter: (status = 2)
SubPlan 1
-> Aggregate (cost=24.94..24.95 rows=1 width=8)
-> Hash Left Join (cost=5.67..23.69 rows=500 width=0)
Hash Cond: ((work_dates.work_date)::date = pss.edate)
Filter: CASE WHEN (ps.id IS NULL) THEN (((date_part('isodow'::text, work_dates.work_date))::integer >= 1) AND ((date_part('isodow'::text, work_dates.work_date))::integer <= 5)) WHEN (pss.id IS NOT NULL) THEN pss.need_work WHEN (ps.legal_holiday AND (lh.id IS NOT NULL)) THEN lh.is_exchange ELSE (((ps.week)::integer & (1 << ((date_part('isodow'::text, work_dates.work_date))::integer - 1))) <> 0) END
-> Hash Left Join (cost=4.29..17.10 rows=1000 width=13)
Hash Cond: ((work_dates.work_date)::date = lh.edate)
-> Function Scan on generate_series work_dates (cost=0.01..10.01 rows=1000 width=8)
-> Hash (cost=2.46..2.46 rows=146 width=9)
-> Seq Scan on tbl_legal_holidays lh (cost=0.00..2.46 rows=146 width=9)
-> Hash (cost=1.36..1.36 rows=1 width=9)
-> Seq Scan on tbl_punch_strategy_schedules pss (cost=0.00..1.36 rows=1 width=9)
Filter: (punch_strategy_id = ps.id)
-> Sort (cost=107.86..108.83 rows=388 width=68)
Sort Key: scs.client_id
-> Subquery Scan on scs (cost=81.47..91.17 rows=388 width=68)
-> HashAggregate (cost=81.47..87.29 rows=388 width=68)
Group Key: t_15.client_id
-> Seq Scan on tbl_sales_contracts t_15 (cost=0.00..68.46 rows=1735 width=13)
Filter: (build_by_project AND (client_id IS NOT NULL))