用sql语句写 查询各个课程号及相应的选课人数。 (5) 统计每门课程的选课人数和最高分。 (6) 统计每个学生的选课门数和考试总成绩,并按选课门数降序排列。 (7) 查询选修了3门以上课程的学生学号。
时间: 2024-03-14 19:45:14 浏览: 121
好的,我会回答你的问题,以下是每个问题的答案:
1. 查询各个课程号及相应的选课人数:
```
SELECT 课程号, COUNT(学生号) AS 选课人数
FROM 选课表
GROUP BY 课程号;
```
2. 统计每门课程的选课人数和最高分:
```
SELECT 选课表.课程号, COUNT(*) AS 选课人数, MAX(成绩) AS 最高分
FROM 选课表 JOIN 成绩表 ON 选课表.学生号 = 成绩表.学生号 AND 选课表.课程号 = 成绩表.课程号
GROUP BY 选课表.课程号;
```
3. 统计每个学生的选课门数和考试总成绩,并按选课门数降序排列:
```
SELECT 选课表.学生号, COUNT(*) AS 选课门数, SUM(成绩) AS 考试总成绩
FROM 选课表 JOIN 成绩表 ON 选课表.学生号 = 成绩表.学生号 AND 选课表.课程号 = 成绩表.课程号
GROUP BY 选课表.学生号
ORDER BY 选课门数 DESC;
```
4. 查询选修了3门以上课程的学生学号:
```
SELECT 学生号
FROM 选课表
GROUP BY 学生号
HAVING COUNT(*) >= 3;
```
相关问题
mysql 统计每门课程的选课人数、每门课程的最高分、最低分、平均分。
可以使用以下 SQL 语句实现:
```
SELECT
course_name,
COUNT(DISTINCT student_id) AS num_students,
MAX(score) AS max_score,
MIN(score) AS min_score,
AVG(score) AS avg_score
FROM
course_score
INNER JOIN courses ON course_score.course_id = courses.course_id
GROUP BY
course_name;
```
其中,`course_score` 表是存储了每个学生在每门课程上的成绩信息的表,`courses` 表是存储了每门课程的基本信息的表。这个 SQL 语句会将两个表联结起来,并且按照课程名称分组,统计每门课程的选课人数、最高分、最低分和平均分。最终结果会以课程名称为行,各个统计指标为列的形式呈现。
sql查询每门课程被选修最高分最低分
您好!针对您的问题,可以使用以下 SQL 语句查询每门课程被选修的最高分和最低分:
```
SELECT course_name, MAX(score) AS highest_score, MIN(score) AS lowest_score
FROM scores
GROUP BY course_name;
```
其中,`scores` 表是包含了所有学生选课成绩的表,包括了学生姓名、课程名称、成绩等信息。在这个表中,每一行记录代表了一个学生的一门课程的成绩情况。
以上 SQL 语句会将 `scores` 表按照课程名称进行分组,然后分别计算每组中的最高分和最低分,并将结果返回。其中 `MAX(score)` 表示求最高分,`MIN(score)` 表示求最低分。