sql 语文、数学、英语三科成绩,没有成绩的输出为0,按照学生的有效平均成绩降序显示
时间: 2023-11-04 11:26:30 浏览: 160
查看学生各课程考试成绩平均分.sql
可以使用 SQL 的 CASE 和 AVG 函数来实现:
```sql
SELECT
student_id,
AVG(CASE WHEN subject = '语文' THEN score ELSE 0 END) AS chinese_score,
AVG(CASE WHEN subject = '数学' THEN score ELSE 0 END) AS math_score,
AVG(CASE WHEN subject = '英语' THEN score ELSE 0 END) AS english_score,
AVG(CASE WHEN score > 0 THEN score ELSE 0 END) AS avg_score
FROM
score_table
GROUP BY
student_id
ORDER BY
avg_score DESC;
```
其中,`score_table` 表示成绩表,包含学生 ID、科目和成绩三个字段。以上 SQL 语句会计算每个学生的语文、数学、英语三科的平均成绩,并将没有成绩的科目得分设置为 0,然后计算有效平均成绩,并按照有效平均成绩降序排列输出。
阅读全文