查询score中选学多门课程的同学中分数为非最高分成绩的记录
时间: 2024-05-05 16:19:11 浏览: 12
您好,我明白您的问题。我可以为您提供以下MySQL查询语句,以查找选学多门课程的同学中分数为非最高分成绩的记录:
```
SELECT *
FROM scores s1
WHERE s1.score < (SELECT MAX(score) FROM scores s2 WHERE s1.student_id = s2.student_id)
AND s1.student_id IN (
SELECT student_id
FROM scores
GROUP BY student_id
HAVING COUNT(DISTINCT course_id) > 1
);
```
这个查询将返回所有选学多门课程的同学中分数为非最高分成绩的记录。
相关问题
成绩表里面有多门课程,要查询平均分最高的学生姓名sql
可以使用以下 SQL 语句查询平均分最高的学生姓名:
```
SELECT name
FROM scores
GROUP BY name
ORDER BY AVG(score) DESC
LIMIT 1;
```
其中,`scores` 是成绩表的表名,包含学生姓名和对应的分数,`name` 是学生姓名的列名,`score` 是分数的列名。`GROUP BY name` 按学生姓名进行分组,`AVG(score)` 计算每个学生的平均分,`ORDER BY AVG(score) DESC` 按平均分降序排序,`LIMIT 1` 取排序后的第一条记录,即平均分最高的学生姓名。
输入一位同学五门课的成绩,输出最高分用c语言
以下是用 C 语言实现的代码,可以输入一位同学的五门课程成绩并输出最高分:
```c
#include <stdio.h>
int main() {
float score1, score2, score3, score4, score5;
float maxScore;
printf("请输入五门课程的成绩:\n");
scanf("%f %f %f %f %f", &score1, &score2, &score3, &score4, &score5);
maxScore = score1;
if (score2 > maxScore) {
maxScore = score2;
}
if (score3 > maxScore) {
maxScore = score3;
}
if (score4 > maxScore) {
maxScore = score4;
}
if (score5 > maxScore) {
maxScore = score5;
}
printf("最高分为:%.2f\n", maxScore);
return 0;
}
```
这个程序通过 `scanf` 函数从控制台输入五门课程的成绩,并用 `if` 语句判断每门课程的成绩是否是最高分。最后,程序输出最高分。