查询20岁的所有有选课的学生的学号、姓名、平均成绩(avg_score,此为列名,下同)(平均成绩四舍五入到个位)、总成绩(sum_score)。如果一门课选两次以上,只计算最高成绩那一次
时间: 2024-10-19 22:17:18 浏览: 22
查询学生信息需要假设有一个包含学生数据的表,如"Students"表,其中包含字段如student_id(学号),name(姓名),age(年龄),course_scores(课程分数列表)。我们可以构造一条SQL查询来获取满足条件的信息:
```sql
SELECT
student_id AS 学号,
name AS 姓名,
ROUND(AVG(course_scores)) AS 平均成绩,
MAX(CASE WHEN course_id IN (SELECT DISTINCT course_id FROM Students GROUP BY course_id HAVING COUNT(*) > 1) THEN course_scores ELSE NULL END) AS 总成绩
FROM
Students
WHERE
age = 20
GROUP BY
student_id, name;
```
这条SQL做了以下几件事:
1. 筛选出年龄为20岁的学生。
2. 计算每个学生的每门课程平均成绩(ROUND函数用于四舍五入到个位)。
3. 对于那些某门课程选择超过一次的情况(通过子查询找出这些课程_id),它取最高的成绩作为总成绩。
相关问题
查询学号为S5的同学所学课程的平均成绩,查询结果中列名显示为平均成绩。
可以使用如下的SQL语句进行查询:
```
SELECT AVG(score) AS average_score
FROM course_selection
WHERE student_id = 'S5';
```
其中,`course_selection` 表为选课表,包含了学生的选课信息,包括学号 `student_id`、课程号 `course_id` 和分数 `score`。使用 `AVG` 聚合函数计算学号为 S5 的学生所学课程的平均成绩,然后使用 `AS` 关键字为聚合函数指定别名,使得查询结果的列名符合要求。
阅读全文