猿问

如果其中一个表包含 mysql 中的单词或字符串,如何不显示任何内容?

这是我第一次来这里。所以正如标题所暗示的那样,我有这个代码可以添加、计算、显示学生的所有成绩作为一般平均


如果其中一列包含字符串,例如“D”或删除,我试图不显示成绩的一般平均值。但我不知道如何。


SELECT ( 

        SELECT ROUND(AVG(grades_avg)) 

        FROM grades 

        WHERE studentid = 20160001

        AND grades.schoolyearseq_id = 20162017 

        AND grades.semseq_id = 201620171 

        ) AS average");

所以任何帮助将不胜感激。谢谢你


更新 1


嗨,伙计们,抱歉花了我很长时间才更新……我尝试实现你们悲伤地提出的答案/评论,查询仍然会输出一个数字。上面的查询将计算“D”或删除为“0”或零。下面的查询将计算但会忽略“D”我还附上了下面的图片

一旦我破解了这个东西,我会尝试更新你们。谢谢


qq_笑_17
浏览 160回答 3
3回答

青春有我

您是否尝试过添加 WHERE?WHERE grades.grades_avg NOT IN ('D', 'dropped')所以它看起来像:SELECT (SELECT ROUND(AVG(grades_avg)) FROM grades WHERE studentid = 20160001AND grades_avg NOT IN ('D', 'dropped')AND grades.schoolyearseq_id = 20162017 AND grades.semseq_id = 201620171     ) AS average");

holdtom

试试下面的 CASE 语句:SELECTCASE    WHEN grades_avg = 'D' OR grades_avg = 'dropped' THEN ' '    ELSE ROUND(AVG(grades_avg))END AVERAGEFROM gradesWHERE studentid = 20160001AND grades.schoolyearseq_id = 20162017AND grades.semseq_id = 201620171;
随时随地看视频慕课网APP
我要回答