除以分组前的总数无法直接在查询语句中计算,需要将查询结果导入到一个临时表中,然后使用另外一条SQL查询语句计算总数,并将总数与每个分组的数量相除。

首先,将原始查询语句作为子查询,将结果导入到一个临时表中:

CREATE TEMPORARY TABLE temp_result AS (
    SELECT pea.EMP_CODE, pew.LEVEL_NAME, pee.SUGGESTED_LEVEL, COUNT(1) AS count
    FROM PFQA_EXAMINE_EVALUATION pee 
    LEFT JOIN PFQA_EVALUATION_APPRAISEE pea ON pea.ID = pee.APPRAISEE_ID 
    LEFT JOIN PFQA_EXAMINE_WEIGHT pew ON pew.ID = pee.WEIGHT_ID 
    WHERE pee.activity_id = 'c9a813d114e33a2f46f6b17861952a7b'
    AND EXISTS (
        SELECT 1 
        FROM pfqa_examiner_activ_evaluation activ
        WHERE pee.examiner_id = activ.examiner_id
        AND activ.status = 3
    )
    GROUP BY pea.EMP_CODE, pew.LEVEL_NAME, pee.SUGGESTED_LEVEL
);

然后,使用另外一条SQL查询语句计算总数并将总数与每个分组的数量相除:

SELECT EMP_CODE, LEVEL_NAME, SUGGESTED_LEVEL, count, count / total AS ratio
FROM temp_result
CROSS JOIN (
    SELECT COUNT(1) AS total
    FROM temp_result
) t;

这样就可以得到每个分组的数量以及每个分组数量与总数的比例。


原文地址: https://www.cveoy.top/t/topic/i4lQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录