/*
* 建立新表,记录用户试卷未完成数和未完成率
*/
WITH incomplete_t AS (
    SELECT uid, level,
        COUNT(IF(submit_time IS NULL, exam_id, NULL)) AS incomplete_cnt,
        ROUND(
            IFNULL(1 - COUNT(submit_time) / COUNT(start_time), 0), 3 
        ) AS incomplete_rate,
        COUNT(start_time) AS total_cnt
    FROM user_info
        LEFT JOIN exam_record
        USING(uid)
    GROUP BY uid
)

SELECT uid, incomplete_cnt, incomplete_rate
FROM incomplete_t
WHERE EXISTS (
    SELECT uid FROM incomplete_t WHERE incomplete_cnt > 2 AND level = 0 
) AND level = 0
UNION ALL
SELECT uid, incomplete_cnt, incomplete_rate
FROM incomplete_t
WHERE NOT EXISTS (
    SELECT uid FROM incomplete_t WHERE incomplete_cnt > 2 AND level = 0
) AND total_cnt > 0
ORDER BY incomplete_rate