select([ 'ste_subcontractor', // RT Shop DB::raw('SUM(CASE WHEN type_of_joint = "S" AND rt_result IS NOT NULL AND rt_result != "" THEN 1 ELSE 0 END) as rt_shop_total'), DB::raw('SUM(CASE WHEN type_of_joint = "S" AND rt_result NOT IN ("", "Accept / Годен") THEN 1 ELSE 0 END) as rt_shop_repair'), // RT Field DB::raw('SUM(CASE WHEN type_of_joint = "F" AND rt_result IS NOT NULL AND rt_result != "" THEN 1 ELSE 0 END) as rt_field_total'), DB::raw('SUM(CASE WHEN type_of_joint = "F" AND rt_result NOT IN ("", "Accept / Годен") THEN 1 ELSE 0 END) as rt_field_repair'), // UT Shop DB::raw('SUM(CASE WHEN type_of_joint = "S" AND ut_result IS NOT NULL AND ut_result != "" THEN 1 ELSE 0 END) as ut_shop_total'), DB::raw('SUM(CASE WHEN type_of_joint = "S" AND ut_result NOT IN ("", "Accept / Годен") THEN 1 ELSE 0 END) as ut_shop_repair'), // UT Field DB::raw('SUM(CASE WHEN type_of_joint = "F" AND ut_result IS NOT NULL AND ut_result != "" THEN 1 ELSE 0 END) as ut_field_total'), DB::raw('SUM(CASE WHEN type_of_joint = "F" AND ut_result NOT IN ("", "Accept / Годен") THEN 1 ELSE 0 END) as ut_field_repair'), ]) ->whereNotNull('ste_subcontractor') ->where('ste_subcontractor', '!=', '') ->groupBy('ste_subcontractor') ->orderBy('ste_subcontractor') ->get(); $formattedResults = []; foreach ($results as $r) { // Calculate RT Shop Rate $rtShopRate = 0; if ($r->rt_shop_total > 0) { $rtShopRate = round(($r->rt_shop_repair * 100.0) / $r->rt_shop_total, 2); } // Calculate RT Field Rate $rtFieldRate = 0; if ($r->rt_field_total > 0) { $rtFieldRate = round(($r->rt_field_repair * 100.0) / $r->rt_field_total, 2); } // Calculate UT Shop Rate $utShopRate = 0; if ($r->ut_shop_total > 0) { $utShopRate = round(($r->ut_shop_repair * 100.0) / $r->ut_shop_total, 2); } // Calculate UT Field Rate $utFieldRate = 0; if ($r->ut_field_total > 0) { $utFieldRate = round(($r->ut_field_repair * 100.0) / $r->ut_field_total, 2); } // Calculate General Rate $totalRepair = $r->rt_shop_repair + $r->rt_field_repair + $r->ut_shop_repair + $r->ut_field_repair; $totalExamined = $r->rt_shop_total + $r->rt_field_total + $r->ut_shop_total + $r->ut_field_total; $generalRate = 0; if ($totalExamined > 0) { $generalRate = round(($totalRepair * 100.0) / $totalExamined, 2); } $formattedResults[] = [ 'Subcontractor' => $r->ste_subcontractor, 'RT Shop' => $rtShopRate, 'RT Field' => $rtFieldRate, 'UT Shop' => $utShopRate, 'UT Field' => $utFieldRate, 'General Rate %' => $generalRate ]; } echo json_encode($formattedResults, JSON_PRETTY_PRINT); ?>