mysql 的一点点记录

以后再来整理。

-- 查询一个学校的报修单数
SELECT
  s.id AS schoolId , -- 学校ID
    COUNT(i.id) as cntId,  -- 报修单数
  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 (
    -- 完成报修单数
    SELECT
        s.id AS schoolId , -- 学校ID
        IFNULL(COUNT(i.id),0) as overcnt  -- 完成的报修单数
    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 (
    -- 未处理数
    SELECT
        s.id AS schoolId , -- 学校ID
        IFNULL(COUNT(i.id),0) as nohandlecnt  -- 未处理报修单数

    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 

猜你喜欢

转载自www.cnblogs.com/sunxun/p/8986804.html