SQLZoo NSS教程Q6:ROUND函数与百分比计算困惑求助
SQLZoo NSS教程第6题解法说明
问题核心
要计算两门学科中,对Q22选择A_STRONGLY_AGREE的学生百分比,本质是「选同意的学生总数 ÷ 该学科总学生数 × 100」,再用ROUND函数取整。
你的代码问题
当前计算逻辑有误:
SUM(response * A_STRONGLY_AGREE) / 100仅算出了选同意的学生总数,没有除以该学科的总学生数,因此得到的不是百分比。
正确解法
先计算每个分组里选同意的学生数,再除以该分组的总学生数,乘以100得到百分比,最后用ROUND取整:
SELECT subject, ROUND( (SUM(response * A_STRONGLY_AGREE / 100) / SUM(response)) * 100, 0 ) AS agree_percentage FROM nss WHERE question = 'Q22' AND subject IN ('(8) Computer Science', '(H) Creative Arts and Design') GROUP BY subject
ROUND函数用法说明
ROUND(计算值, 0) 里的第二个参数0表示保留0位小数,直接把带小数的百分比(比如72.6)取整为整数(73),刚好满足题目去除小数位的要求。
内容的提问来源于stack exchange,提问作者importdev
相关产品推荐
相关产品推荐

