题解 | 浙大不同难度题目的正确率

浙大不同难度题目的正确率

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

思路分析:

计算不同难度正确率,定位浙大同学,找到他的device_id,根据他的device_id找到他的答题情况,根据question_id找到每道题的难度,根据难度进行分组,然后组内统计答题正确的题目数除以组内总题数即可,因此三表连接分组聚合即可。表之间分别通过device_id、question_id进行连接。

代码解释:

SELECT
    qd.difficult_level,
    ROUND(COUNT(CASE WHEN qpd.result = 'right' THEN 1 END) / COUNT(*), 4) AS correct_rate
FROM
    (   
        SELECT
            *
        FROM
            user_profile
        WHERE
            university = '浙江大学'
    ) AS usr
JOIN
    question_practice_detail AS qpd
    ON usr.device_id = qpd.device_id
JOIN
    question_detail AS qd
    ON qd.question_id = qpd.question_id
GROUP BY
    qd.difficult_level
ORDER BY
    correct_rate;

我习惯于用子查询先筛选再连接,当然也可以先连接,再在WHERE子句中筛选出浙大同学,连接完成后对连接后的表用GROUP BY根据难度分组,统计正确答题题数用条件计数,用COUNT或者SUM都行,统计总题数用COUNT计数,两者相除得到结果。最后根据正确率升序排列。

全部评论

相关推荐

自来熟的放鸽子能手面...:这个不一定,找hr跟进一下
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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