题解 | #根据指定记录是否存在输出不同情况#

根据指定记录是否存在输出不同情况

http://www.nowcoder.com/practice/f72d3fc27dc14f3aae76ee9823ccca6b

/*
* 建立新表,记录用户试卷未完成数和未完成率
*/
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
全部评论

相关推荐

10-17 23:18
已编辑
西北农林科技大学 Web前端
独行m:给25可以试试,但他只能给12,那就是纯纯的事精
秋招,不懂就问
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务