A little record of mysql

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

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325211993&siteId=291194637