QUERY PLAN
Limit (cost=54851.54..54851.64 rows=40 width=560)
-> Sort (cost=54851.54..54855.80 rows=1703 width=560)
Sort Key: p.bargain_date DESC, p.updated_at DESC
-> Subquery Scan on p (cost=54295.32..54797.71 rows=1703 width=560)
-> GroupAggregate (cost=54295.32..54763.65 rows=1703 width=532)
Group Key: p_1.id, pd.user_id, pd.pct
-> Sort (cost=54295.32..54299.58 rows=1703 width=456)
Sort Key: p_1.id, pd.user_id, pd.pct
-> Hash Left Join (cost=2155.42..54203.92 rows=1703 width=456)
Hash Cond: (p_1.id = esgs.project_id)
-> Hash Left Join (cost=2134.28..54178.30 rows=1703 width=424)
Hash Cond: (p_1.id = eccrta.project_id)
-> Hash Left Join (cost=2059.18..54098.72 rows=1703 width=392)
Hash Cond: (p_1.id = ecctcpc.project_id)
-> Hash Left Join (cost=2024.75..54059.80 rows=1703 width=360)
Hash Cond: (p_1.id = ecctasc.project_id)
-> Hash Left Join (cost=1698.98..53729.55 rows=1703 width=328)
Hash Cond: (p_1.id = ecta.project_id)
-> Hash Right Join (cost=1695.04..53721.14 rows=1703 width=296)
Hash Cond: ("*SELECT* 1".project_id = p_1.id)
-> GroupAggregate (cost=1314.38..53336.64 rows=200 width=12)
Group Key: "*SELECT* 1".project_id
-> Sort (cost=1314.38..1318.64 rows=1703 width=65)
Sort Key: "*SELECT* 1".project_id
-> Hash Left Join (cost=163.43..1222.98 rows=1703 width=65)
Hash Cond: (("*SELECT* 1".engineer_id = payroll.user_id) AND ("*SELECT* 1".settle_month = payroll.settle_month))
-> Hash Left Join (cost=101.74..1152.35 rows=1703 width=37)
Hash Cond: ("*SELECT* 1".engineer_id = psrr.user_id)
-> Append (cost=99.26..1140.59 rows=1703 width=20)
-> Subquery Scan on "*SELECT* 1" (cost=99.26..415.16 rows=323 width=20)
-> Hash Join (cost=99.26..411.93 rows=323 width=280)
Hash Cond: (c.id = p_2.case_id)
-> Seq Scan on tbl_cases c (cost=0.00..267.41 rows=5067 width=12)
Filter: (project_id IS NOT NULL)
-> Hash (cost=92.46..92.46 rows=544 width=28)
-> Seq Scan on tbl_pre_sales p_2 (cost=0.00..92.46 rows=544 width=28)
Filter: ((start_at IS NOT NULL) AND ((NOT is_draft) OR (is_draft IS NULL)) AND (end_at IS NOT NULL) AND (engineer_id IS NOT NULL) AND (end_at > start_at))
-> Subquery Scan on "*SELECT* 2" (cost=330.37..725.43 rows=1380 width=20)
-> Hash Join (cost=330.37..711.63 rows=1380 width=280)
Hash Cond: (i.case_id = c_1.id)
-> Seq Scan on tbl_implement_records i (cost=0.00..357.86 rows=2340 width=24)
Filter: ((arrived_at IS NOT NULL) AND ((NOT is_draft) OR (is_draft IS NULL)) AND (left_at IS NOT NULL) AND (left_at > arrived_at))
-> Hash (cost=267.41..267.41 rows=5037 width=16)
-> Seq Scan on tbl_cases c_1 (cost=0.00..267.41 rows=5037 width=16)
Filter: ((last_engineer IS NOT NULL) AND (project_id IS NOT NULL))
-> Hash (cost=2.30..2.30 rows=14 width=21)
-> Hash Left Join (cost=1.07..2.30 rows=14 width=21)
Hash Cond: (psrr.punch_strategy_id = ps.id)
-> Seq Scan on tbl_punch_strategy_resource_rels psrr (cost=0.00..1.14 rows=14 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=58.69..58.69 rows=200 width=40)
-> Subquery Scan on payroll (cost=54.19..58.69 rows=200 width=40)
-> HashAggregate (cost=54.19..56.69 rows=200 width=40)
Group Key: am.user_id, t.settle_month
-> Append (cost=12.02..48.96 rows=697 width=40)
-> HashAggregate (cost=12.02..14.62 rows=208 width=40)
Group Key: am.user_id, t.settle_month
-> Hash Join (cost=1.34..9.95 rows=276 width=11)
Hash Cond: (am.erp_wage_ticket_id = t.id)
-> Seq Scan on tbl_erp_wage_ticket_amounts am (cost=0.00..7.45 rows=345 width=11)
Filter: (user_id IS NOT NULL)
-> Hash (cost=1.19..1.19 rows=12 width=8)
-> Seq Scan on tbl_erp_wage_tickets t (cost=0.00..1.19 rows=12 width=8)
Filter: (status = 2)
-> HashAggregate (cost=9.56..12.33 rows=222 width=40)
Group Key: am_1.user_id, t_1.settle_month
-> Hash Join (cost=1.27..7.89 rows=222 width=11)
Hash Cond: (am_1.erp_social_insurance_id = t_1.id)
-> Seq Scan on tbl_erp_social_insurance_amounts am_1 (cost=0.00..5.67 rows=267 width=11)
Filter: (user_id IS NOT NULL)
-> Hash (cost=1.15..1.15 rows=10 width=8)
-> Seq Scan on tbl_erp_social_insurances t_1 (cost=0.00..1.15 rows=10 width=8)
Filter: (status = 2)
-> HashAggregate (cost=7.54..9.82 rows=182 width=40)
Group Key: am_2.user_id, t_2.settle_month
-> Hash Join (cost=1.21..6.13 rows=188 width=11)
Hash Cond: (am_2.erp_provident_fund_id = t_2.id)
-> Seq Scan on tbl_erp_provident_fund_amounts am_2 (cost=0.00..4.11 rows=211 width=11)
Filter: (user_id IS NOT NULL)
-> Hash (cost=1.11..1.11 rows=8 width=8)
-> Seq Scan on tbl_erp_provident_funds t_2 (cost=0.00..1.11 rows=8 width=8)
Filter: (status = 2)
-> HashAggregate (cost=4.16..5.22 rows=85 width=40)
Group Key: am_3.user_id, t_3.settle_month
-> Hash Join (cost=1.24..3.52 rows=85 width=11)
Hash Cond: (am_3.erp_personal_tax_id = t_3.id)
-> Seq Scan on tbl_erp_personal_tax_amounts am_3 (cost=0.00..1.94 rows=94 width=11)
Filter: (user_id IS NOT NULL)
-> Hash (cost=1.12..1.12 rows=9 width=8)
-> Seq Scan on tbl_erp_personal_taxs t_3 (cost=0.00..1.12 rows=9 width=8)
Filter: (status = 2)
SubPlan 1
-> Aggregate (cost=30.50..30.51 rows=1 width=8)
-> Hash Left Join (cost=5.78..29.25 rows=500 width=0)
Hash Cond: ((work_dates.work_date)::date = lh.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=1.50..22.00 rows=1000 width=13)
Hash Cond: ((work_dates.work_date)::date = pss.edate)
-> Function Scan on generate_series work_dates (cost=0.01..10.01 rows=1000 width=8)
-> Hash (cost=1.36..1.36 rows=10 width=9)
-> Seq Scan on tbl_punch_strategy_schedules pss (cost=0.00..1.36 rows=10 width=9)
Filter: (punch_strategy_id = ps.id)
-> 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=359.38..359.38 rows=1703 width=288)
-> Hash Left Join (cost=271.13..359.38 rows=1703 width=288)
Hash Cond: (p_1.id = o2.project_id)
-> Hash Left Join (cost=240.14..323.91 rows=1703 width=224)
Hash Cond: (p_1.id = o.project_id)
-> Hash Left Join (cost=209.16..288.44 rows=1703 width=160)
Hash Cond: (p_1.id = pd.project_id)
-> Hash Right Join (cost=206.79..279.67 rows=1703 width=124)
Hash Cond: (sc.from_project = p_1.id)
-> Seq Scan on tbl_sales_contracts sc (cost=0.00..68.32 rows=1732 width=4)
-> Hash (cost=185.50..185.50 rows=1703 width=124)
-> Seq Scan on tbl_projects p_1 (cost=0.00..185.50 rows=1703 width=124)
Filter: (project_status = 3)
-> Hash (cost=2.32..2.32 rows=4 width=40)
-> Subquery Scan on pd (cost=2.23..2.32 rows=4 width=40)
-> HashAggregate (cost=2.23..2.28 rows=4 width=40)
Group Key: t_4.project_id, r.user_id
-> Hash Right Join (cost=1.07..2.20 rows=4 width=13)
Hash Cond: (r.erp_profit_distribute_id = t_4.id)
-> Seq Scan on tbl_erp_profit_distribute_pcts r (cost=0.00..1.08 rows=8 width=13)
-> Hash (cost=1.05..1.05 rows=2 width=8)
-> Seq Scan on tbl_erp_profit_distributes t_4 (cost=0.00..1.05 rows=2 width=8)
Filter: ((project_id IS NOT NULL) AND (status = 2))
-> Hash (cost=29.30..29.30 rows=135 width=68)
-> Subquery Scan on o (cost=25.93..29.30 rows=135 width=68)
-> HashAggregate (cost=25.93..27.95 rows=135 width=68)
Group Key: t_5.project_id
-> Hash Right Join (cost=7.75..21.91 rows=536 width=14)
Hash Cond: (eipss.erp_sales_outbound_id = t_5.id)
-> Seq Scan on tbl_erp_inventory_product_spents eipss (cost=0.00..12.65 rows=565 width=14)
-> Hash (cost=5.92..5.92 rows=146 width=8)
-> Seq Scan on tbl_erp_sales_outbounds t_5 (cost=0.00..5.92 rows=146 width=8)
Filter: ((project_id IS NOT NULL) AND (status = 2))
-> Hash (cost=29.30..29.30 rows=135 width=68)
-> Subquery Scan on o2 (cost=25.93..29.30 rows=135 width=68)
-> HashAggregate (cost=25.93..27.95 rows=135 width=68)
Group Key: t_6.project_id
-> Hash Right Join (cost=7.75..21.91 rows=536 width=14)
Hash Cond: (eipss_1.erp_sales_outbound_id = t_6.id)
-> Seq Scan on tbl_erp_inventory_product_spents eipss_1 (cost=0.00..12.65 rows=565 width=14)
-> Hash (cost=5.92..5.92 rows=146 width=8)
-> Seq Scan on tbl_erp_sales_outbounds t_6 (cost=0.00..5.92 rows=146 width=8)
Filter: ((project_id IS NOT NULL) AND (status = 2))
-> Hash (cost=3.57..3.57 rows=29 width=36)
-> Subquery Scan on ecta (cost=2.92..3.57 rows=29 width=36)
-> HashAggregate (cost=2.92..3.28 rows=29 width=36)
Group Key: t_7.project_id
-> Seq Scan on tbl_erp_cost_tickets t_7 (cost=0.00..2.74 rows=36 width=9)
Filter: ((project_id IS NOT NULL) AND (status = 2))
-> Hash (cost=325.76..325.76 rows=1 width=36)
-> Subquery Scan on ecctasc (cost=325.72..325.76 rows=1 width=36)
-> GroupAggregate (cost=325.72..325.75 rows=1 width=36)
Group Key: sc_1.from_project
-> Sort (cost=325.72..325.73 rows=1 width=9)
Sort Key: sc_1.from_project
-> Nested Loop (cost=1.37..325.71 rows=1 width=9)
-> Hash Left Join (cost=1.09..325.39 rows=1 width=9)
Hash Cond: (t_8.id = cpc.erp_cash_cost_ticket_id)
Filter: (cpc.id IS NULL)
-> Seq Scan on tbl_erp_cash_cost_tickets t_8 (cost=0.00..281.94 rows=8465 width=13)
Filter: (status = 2)
-> Hash (cost=1.04..1.04 rows=4 width=8)
-> Seq Scan on tbl_erp_cash_cost_ticket_client_project_costs cpc (cost=0.00..1.04 rows=4 width=8)
-> Index Scan using tbl_sales_contracts_pkey on tbl_sales_contracts sc_1 (cost=0.28..0.32 rows=1 width=8)
Index Cond: (id = t_8.sales_contract_id)
Filter: (from_project IS NOT NULL)
-> Hash (cost=34.40..34.40 rows=3 width=36)
-> Subquery Scan on ecctcpc (cost=34.30..34.40 rows=3 width=36)
-> GroupAggregate (cost=34.30..34.37 rows=3 width=36)
Group Key: cpc_1.project_id
-> Sort (cost=34.30..34.31 rows=4 width=9)
Sort Key: cpc_1.project_id
-> Nested Loop (cost=0.29..34.26 rows=4 width=9)
-> Seq Scan on tbl_erp_cash_cost_ticket_client_project_costs cpc_1 (cost=0.00..1.04 rows=4 width=13)
Filter: (project_id IS NOT NULL)
-> Index Scan using tbl_erp_cash_cost_tickets_pkey on tbl_erp_cash_cost_tickets t_9 (cost=0.29..8.30 rows=1 width=4)
Index Cond: (id = cpc_1.erp_cash_cost_ticket_id)
Filter: (status = 2)
-> Hash (cost=74.97..74.97 rows=10 width=36)
-> Subquery Scan on eccrta (cost=74.67..74.97 rows=10 width=36)
-> GroupAggregate (cost=74.67..74.87 rows=10 width=36)
Group Key: sc_2.from_project
-> Sort (cost=74.67..74.70 rows=10 width=10)
Sort Key: sc_2.from_project
-> Nested Loop (cost=0.28..74.50 rows=10 width=10)
-> Seq Scan on tbl_erp_cost_convert_tickets t_10 (cost=0.00..1.14 rows=10 width=10)
Filter: (status = 2)
-> Index Scan using tbl_sales_contracts_pkey on tbl_sales_contracts sc_2 (cost=0.28..6.69 rows=1 width=8)
Index Cond: (id = t_10.sales_contract_id)
Filter: (from_project IS NOT NULL)
-> Hash (cost=20.90..20.90 rows=19 width=36)
-> Subquery Scan on esgs (cost=20.48..20.90 rows=19 width=36)
-> HashAggregate (cost=20.48..20.71 rows=19 width=36)
Group Key: t_11.project_id
-> Hash Right Join (cost=5.09..19.23 rows=166 width=14)
Hash Cond: (eipss_2.erp_sales_gift_id = t_11.id)
-> Seq Scan on tbl_erp_inventory_product_spents eipss_2 (cost=0.00..12.65 rows=565 width=14)
-> Hash (cost=4.61..4.61 rows=38 width=8)
-> Seq Scan on tbl_erp_sales_gifts t_11 (cost=0.00..4.61 rows=38 width=8)
Filter: ((project_id IS NOT NULL) AND (status = 2))