I'll sort it out later.
-- Query the number of repair reports for a school SELECT s.id AS schoolId , -- school ID COUNT(i.id) as cntId, -- repair order number IFNULL(t1.nohandlecnt,0) AS nohandlecnt, IFNULL(t2.overcnt,0) AS overcnt, ROUND(overcnt * 100 /COUNT(i.id),1) AS okRate FROM `t_issue` i LEFT JOIN ( --The number of completed repair orders SELECT s.id AS schoolId , -- school ID IFNULL(COUNT(i.id), 0) as overcnt -- the number of completed repair reports FROM `t_issue` i INNER JOIN t_school s ON i.school_id = s.id WHERE i.completed_on IS NOT NULL and i.acknowledged_on IS NOT NULL GROUP BY i.school_id ) t2 ON t2.schoolId = i.school_id LEFT JOIN ( -- unprocessed numbers SELECT s.id AS schoolId , -- school ID IFNULL(COUNT(i.id), 0) as nohandlecnt -- the number of unhandled repair orders FROM `t_issue` i INNER JOIN t_school s ON i.school_id = s.id WHERE i.acknowledged_on IS NULL AND i.completed_on IS NULL GROUP BY i.school_id ) t1 ON t1.schoolId = i.school_id INNER JOIN t_school s ON i.school_id = s.id GROUP BY i.school_id