SQL查询语句:计算正确率的正确写法
语法上没有明显的错误,但是可能会出现逻辑错误。sum函数的语法是SUM(expression),而在这里的expression是一个三元运算符,可能会导致计算错误。正确的写法应该是:
SELECT difficult_level, SUM(IF(qpd.result = 'right', 1, 0)) / COUNT(*) AS correct_rate FROM user_profile up LEFT JOIN question_practice_detail qpd ON up.device_id = qpd.device_id LEFT JOIN question_detail qd ON qpd.question_id = qd.question_id GROUP BY difficult_level
这里将三元运算符放在了IF函数里面,同时将计算结果放在了SUM函数的参数里面。
原文地址: https://www.cveoy.top/t/topic/neKh 著作权归作者所有。请勿转载和采集!