SQL SEVER查询选修了2门以上课程的学生学号。查询结果按所选课程数降序排列。如果有课程数相同的,按平均成绩升序排列。
时间: 2024-02-16 17:00:12 浏览: 119
好的,您可以尝试使用以下 SQL 查询语句:
```
SELECT student_id, COUNT(DISTINCT course_id) as course_count, AVG(score) as avg_score
FROM student_course
GROUP BY student_id
HAVING COUNT(DISTINCT course_id) >= 2
ORDER BY course_count DESC, avg_score ASC;
```
解释一下这个查询语句:
- `student_course` 是指学生选课表的表名,您需要替换成您实际使用的表名。
- `student_id` 表示学生的学号。
- `COUNT(DISTINCT course_id) as course_count` 表示计算该学生选修的课程数量。
- `AVG(score) as avg_score` 表示计算该学生选修课程的平均成绩。
- `GROUP BY student_id` 表示按学号分组,以便计算每个学生选修的课程数量和平均成绩。
- `HAVING COUNT(DISTINCT course_id) >= 2` 表示筛选出选修了2门以上课程的学生。
- `ORDER BY course_count DESC, avg_score ASC` 表示按选修课程数量降序排列,如果数量相同,再按平均成绩升序排列。
希望这个查询语句能够帮到您!
相关问题
SQL SEVER查询有2门以上课程在80分以上的学生的学号及80分以上的课程数。查询结果按80分以上的课程数降序排列。如果有课程数相同的,按所选全部课程数升序排列
好的,您可以尝试使用以下 SQL 查询语句:
```
SELECT student_id, COUNT(*) as above_80_count
FROM student_course
WHERE score >= 80
GROUP BY student_id
HAVING COUNT(*) >= 2
ORDER BY above_80_count DESC, COUNT(*) ASC;
```
解释一下这个查询语句:
- `student_course` 是指学生选课表的表名,您需要替换成您实际使用的表名。
- `student_id` 表示学生的学号。
- `COUNT(*) as above_80_count` 表示计算该学生选修的成绩在80分以上的课程数量。
- `WHERE score >= 80` 表示筛选出成绩在80分以上的选修记录。
- `GROUP BY student_id` 表示按学号分组,以便计算每个学生选修的成绩在80分以上的课程数量。
- `HAVING COUNT(*) >= 2` 表示筛选出选修了2门以上成绩在80分以上的课程的学生。
- `ORDER BY above_80_count DESC, COUNT(*) ASC` 表示按80分以上的课程数量降序排列,如果数量相同,再按所选全部课程数升序排列。
希望这个查询语句能够帮到您!
sql sever查询选修了两门以上课程的学生学号与课程数。
好的,你可以使用以下 SQL 语句来查询:
```
SELECT 选课表.学号, COUNT(*) AS 课程数
FROM 选课表
GROUP BY 选课表.学号
HAVING COUNT(*) >= 2;
```
其中,`选课表` 是你所查询的选课信息表的表名,`学号` 是你所需要的字段名。`COUNT(*)` 用于统计每个学生选择的课程数,`GROUP BY` 子句用于按照学号对结果进行分组,`HAVING` 子句中的 `COUNT(*) >= 2` 用于筛选选修了两门以上课程的学生。
阅读全文