sql 语文、数学、英语三科成绩,没有成绩的输出为0,按照学生的有效平均成绩降序显示
时间: 2023-11-04 13:26:30 浏览: 164
可以使用 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,然后计算有效平均成绩,并按照有效平均成绩降序排列输出。
相关问题
SQL server语句,如何在一个表中根据学生的平均成绩将学生的全部信息按照降序排序,平均成绩列不在表中
如果平均成绩列不在表中,您需要先通过 SQL 语句计算出每个学生的平均成绩,然后再按照平均成绩进行降序排列。具体的 SQL 语句如下:
```
SELECT 学生姓名, SUM(成绩) / COUNT(成绩) AS 平均成绩
FROM 学生成绩表
GROUP BY 学生姓名
ORDER BY 平均成绩 DESC;
```
该语句假设您已经有一张 `学生成绩表`,其中包含学生姓名和成绩两列。通过使用 `SUM` 和 `COUNT` 函数,我们可以计算出每个学生的平均成绩,并将结果按照平均成绩进行降序排列。注意,在 `SELECT` 语句中,我们使用了 `AS` 关键字来为计算出的平均成绩列指定了别名。
查询每个同学各门课程的平均成绩和最高成绩,按降序排列输出姓名、平均成绩和最高成绩。sqlserver
好的,以下是 SQL Server 的查询语句:
```
SELECT
name,
AVG(score) AS avg_score,
MAX(score) AS max_score
FROM
your_table_name
GROUP BY
name
ORDER BY
avg_score DESC
```
请将 "your_table_name" 替换为你的数据表名称。这个查询语句会按照平均成绩的降序排列输出每个同学的姓名、平均成绩和最高成绩。
阅读全文