这是我第一次来这里。所以正如标题所暗示的那样,我有这个代码可以添加、计算、显示学生的所有成绩作为一般平均如果其中一列包含字符串,例如“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”我还附上了下面的图片一旦我破解了这个东西,我会尝试更新你们。谢谢
3 回答
青春有我
TA贡献1784条经验 获得超8个赞
您是否尝试过添加 WHERE?
WHERE grades.grades_avg NOT IN ('D', 'dropped')
所以它看起来像:
SELECT (SELECT ROUND(AVG(grades_avg))
FROM grades
WHERE studentid = 20160001
AND grades_avg NOT IN ('D', 'dropped')
AND grades.schoolyearseq_id = 20162017
AND grades.semseq_id = 201620171
) AS average");
holdtom
TA贡献1805条经验 获得超10个赞
试试下面的 CASE 语句:
SELECT
CASE
WHEN grades_avg = 'D' OR grades_avg = 'dropped' THEN ' '
ELSE ROUND(AVG(grades_avg))
END AVERAGE
FROM grades
WHERE studentid = 20160001
AND grades.schoolyearseq_id = 20162017
AND grades.semseq_id = 201620171;
- 3 回答
- 0 关注
- 159 浏览
添加回答
举报
0/150
提交
取消