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

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

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

WITH
    user_info_tmp AS (
        SELECT
            ui.uid,
            ui.level level,
            SUM(
                IF (
                    er.submit_time is null
                    and start_time is not null,
                    1,
                    0
                )
            ) incomplete_cnt,
            ROUND(
                IFNULL (
                    SUM(
                        IF (
                            er.submit_time is null
                            and start_time is not null,
                            1,
                            0
                        )
                    ) / count(er.start_time),
                    0
                ),
                3
            ) incomplete_rate,
            count(er.start_time) has_strat
        FROM
            user_info ui
            LEFT JOIN exam_record er on er.uid = ui.uid
        GROUP BY
            ui.uid
    )
SELECT
    user_info_tmp.uid,
    user_info_tmp.incomplete_cnt,
    user_info_tmp.incomplete_rate
FROM
    user_info_tmp
WHERE
    EXISTS (
        SELECT
            1
        FROM
            user_info_tmp
        WHERE
            level = 0
            AND incomplete_cnt > 2
    )
    AND level = 0
UNION ALL
SELECT
    user_info_tmp.uid,
    user_info_tmp.incomplete_cnt,
    user_info_tmp.incomplete_rate
FROM
    user_info_tmp
WHERE
    NOT EXISTS (
        SELECT
            1
        FROM
            user_info_tmp
        WHERE
            level = 0
            AND incomplete_cnt > 2
    )
    and (has_strat <> 0)
ORDER BY
    incomplete_rate

全部评论

相关推荐

07-10 11:08
门头沟学院 Java
Sairus:我注册都注册不了提醒我手机号二次啥的,果然对于人才推得就是快,像我投完了就没回音的
投递京东等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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