利用MySQL命令行窗口在数据库studentms中的3个表:学生表student、课程表course和成绩表score中进行分组聚合查找有关信息。 实验步骤 1. 查询各科成绩的最高分、最低分及平均分。 2. 统计各系的人数。 3. 统计系的人数大于2的系名及人数。 4. 在成绩表中统计参加过考试的人数。
时间: 2024-02-21 15:59:58 浏览: 108
好的,根据您的要求,我会根据您提供的信息进行回答,以下是每个问题的解答:
1. 查询各科成绩的最高分、最低分及平均分。
可以使用以下 SQL 语句实现:
```
SELECT course_name, MAX(score) AS max_score, MIN(score) AS min_score, AVG(score) AS avg_score
FROM score
LEFT JOIN course ON score.course_id = course.course_id
GROUP BY course_name;
```
2. 统计各系的人数。
可以使用以下 SQL 语句实现:
```
SELECT department, COUNT(*) AS student_count
FROM student
GROUP BY department;
```
3. 统计系的人数大于2的系名及人数。
可以使用以下 SQL 语句实现:
```
SELECT department, COUNT(*) AS student_count
FROM student
GROUP BY department
HAVING COUNT(*) > 2;
```
4. 在成绩表中统计参加过考试的人数。
可以使用以下 SQL 语句实现:
```
SELECT COUNT(DISTINCT student_id) AS student_count
FROM score;
```
希望以上解答能够帮助您完成您的任务。
相关问题
MySQL中用查询工具查询查询参加计算机基础课程考试的学生成绩高于课程平均分的学 中 生信息
在MySQL中,你可以使用SELECT语句结合GROUP BY、HAVING和JOIN来获取满足条件的学生信息。首先,假设你有两个表,一个是`students`(包含学生ID和姓名),另一个是`grades`(包含学生ID、课程名称和成绩)。你需要找到参加了“计算机基础课程”并且成绩高于该课程平均分的学生。以下是SQL查询示例:
```sql
SELECT s.student_id, s.name
FROM students s
JOIN grades g ON s.student_id = g.student_id
WHERE g.course_name = '计算机基础课程'
GROUP BY s.student_id, s.name
HAVING AVG(g.score) < g.score;
```
这个查询做了以下操作:
1. 使用JOIN将`students`表和`grades`表连接起来,基于学生的ID匹配数据。
2. WHERE子句限制了只选择课程名为“计算机基础课程”的记录。
3. GROUP BY按学生ID和姓名分组,这样每个学生的成绩会被聚合到一起。
4. HAVING子句用于在分组后过滤出那些其平均成绩低于他们个人成绩的学生。
MySQL查询每个学生的学号、姓名,课程数,最高成绩,最低成绩,平均成绩,总成绩,不及格科目数
在MySQL中,为了获取每个学生的信息,包括学号、姓名、课程数、最高成绩、最低成绩、平均成绩、总成绩以及不及格科目数,你需要编写一个包含子查询和聚合函数的SQL查询。假设有一个名为`students`的学生表和一个名为`grades`的成绩表,它们通过`student_id`关联:
```sql
SELECT
s.student_id,
s.name AS 姓名,
COUNT(g.course_id) AS 课程数,
MAX(g.score) AS 最高成绩,
MIN(g.score) AS 最低成绩,
AVG(g.score) AS 平均成绩,
SUM(g.score) AS 总成绩,
(COUNT(*) FILTER (WHERE g.score < 60)) AS 不及格科目数
FROM
students s
JOIN
grades g ON s.student_id = g.student_id
GROUP BY
s.student_id;
```
这里假设60分以下为不及格。这个查询会按学号对学生信息进行分组,并计算相关的统计数据。
阅读全文
相关推荐
















