SELECT IFNULL(AVG(a.sumScore),0)
FROM
(
SELECT
e.*,SUM(i.index_score) AS sumScore
FROM
index_enterprise_year i
LEFT JOIN enterprise e ON i.enterprise_id = e.id and i.`year` = 2017
WHERE
e.enterprise_status=10
AND (e.father_id = '-1' OR e.father_id IS NULL OR e.father_id = '')
GROUP BY e.id
) a
SELECT IFNULL(AVG(a.sumScore),0)
FROM
(
SELECT
SUM(i.index_score) AS sumScore
FROM
enterprise e
LEFT JOIN index_enterprise_year i ON i.enterprise_id = e.id and i.`year` = 2017
WHERE
e.enterprise_status=10
AND (e.father_id = '-1' OR e.father_id IS NULL OR e.father_id = '')
GROUP BY e.id
) a
时间相差40倍,(这两种方法得出的结果一样,计算平均分的方法不会对总和为null的值求平均分,将求出的企业和如果为null,设置为0)
下面这种是对所有的企业求平均分
SELECT IFNULL(AVG(a.sumScore),0)
FROM
(
SELECT
IFNULL(SUM(i.index_score),0) AS sumScore
FROM
enterprise e
LEFT JOIN index_enterprise_year i ON i.enterprise_id = e.id and i.`year` = 2017
WHERE
e.enterprise_status=10
AND (e.father_id = '-1' OR e.father_id IS NULL OR e.father_id = '')
GROUP BY e.id
) a