sql 查询每门课最低分和最高分的学生记录
时间: 2023-10-01 13:05:53 浏览: 761
假设有一个名为`score`的表,包含学生ID(`student_id`)、课程ID(`course_id`)和分数(`score`)三个字段,可以使用以下SQL语句查询每门课程的最低分和最高分的学生记录:
```
SELECT s.course_id,
MAX(s.score) AS max_score,
MIN(s.score) AS min_score,
MAX(CASE WHEN s.score = max_score THEN s.student_id END) AS max_student_id,
MAX(CASE WHEN s.score = min_score THEN s.student_id END) AS min_student_id
FROM score s
GROUP BY s.course_id
```
这个SQL语句使用了聚合函数`MAX`和`MIN`,以及CASE语句来选择对应的学生ID。最终结果包含每门课程的ID、最高分、最低分以及对应的学生ID。
相关问题
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)` 表示求最低分。
1.创建学生表,学号,姓名,性别,年龄 2.为学号添加主键约束,插入15条记录 3.求出参加考试的学生的个数 4.求出总分,平均分,最高分,最低分 5.为学生表添加科目和分数列,修改数据,要求存储4个学生3门科目(语文/数学/英语)的成绩,即4个学生,3门科目,12条记录 6.求出每门科目的总分,平均分,最高分,最低分 7.求出每门科目的总分,平均分,最高分,最低分,要求只显示平均分大于70的 8.求出每门科目的总分,平均分,最高分,最低分,要求只显示平均分大于70的最后再按平均分由高到低排序 (*)9.求出每门科目中不及格和及格的人数
抱歉,作为一名语言模型,我无法执行数据库操作,如果您需要执行这些操作,请使用相应的数据库管理工具。但是,我可以告诉您如何用 SQL 语言实现这些功能。
1.创建学生表,学号,姓名,性别,年龄:
```sql
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50),
gender VARCHAR(10),
age INT
);
```
2.为学号添加主键约束,插入15条记录:
```sql
ALTER TABLE student
ADD CONSTRAINT pk_student_id PRIMARY KEY (id);
INSERT INTO student (id, name, gender, age) VALUES
(1, '张三', '男', 20),
(2, '李四', '女', 19),
(3, '王五', '男', 21),
(4, '赵六', '女', 22),
(5, '钱七', '男', 20),
(6, '孙八', '女', 19),
(7, '周九', '男', 21),
(8, '吴十', '女', 22),
(9, '郑一', '男', 20),
(10, '王二', '女', 19),
(11, '李三', '男', 21),
(12, '张四', '女', 22),
(13, '刘五', '男', 20),
(14, '赵六', '女', 19),
(15, '孙七', '男', 21);
```
3.求出参加考试的学生的个数:
```sql
SELECT COUNT(*) FROM student;
```
4.求出总分,平均分,最高分,最低分:
假设有一张成绩表 score,包含以下列:学号(student_id)、科目(subject)、分数(score)。
```sql
SELECT SUM(score) AS total_score, AVG(score) AS avg_score, MAX(score) AS max_score, MIN(score) AS min_score FROM score;
```
5.为学生表添加科目和分数列,修改数据,要求存储4个学生3门科目(语文/数学/英语)的成绩,即4个学生,3门科目,12条记录:
```sql
ALTER TABLE student
ADD COLUMN chinese INT,
ADD COLUMN math INT,
ADD COLUMN english INT;
UPDATE student SET chinese = 80, math = 90, english = 70 WHERE id = 1;
UPDATE student SET chinese = 85, math = 92, english = 75 WHERE id = 2;
UPDATE student SET chinese = 75, math = 85, english = 80 WHERE id = 3;
UPDATE student SET chinese = 90, math = 88, english = 78 WHERE id = 4;
```
6.求出每门科目的总分,平均分,最高分,最低分:
```sql
SELECT
SUM(chinese) AS chinese_total,
AVG(chinese) AS chinese_avg,
MAX(chinese) AS chinese_max,
MIN(chinese) AS chinese_min,
SUM(math) AS math_total,
AVG(math) AS math_avg,
MAX(math) AS math_max,
MIN(math) AS math_min,
SUM(english) AS english_total,
AVG(english) AS english_avg,
MAX(english) AS english_max,
MIN(english) AS english_min
FROM student;
```
7.求出每门科目的总分,平均分,最高分,最低分,要求只显示平均分大于70的:
```sql
SELECT
SUM(chinese) AS chinese_total,
AVG(chinese) AS chinese_avg,
MAX(chinese) AS chinese_max,
MIN(chinese) AS chinese_min,
SUM(math) AS math_total,
AVG(math) AS math_avg,
MAX(math) AS math_max,
MIN(math) AS math_min,
SUM(english) AS english_total,
AVG(english) AS english_avg,
MAX(english) AS english_max,
MIN(english) AS english_min
FROM student
WHERE
chinese_avg > 70 AND
math_avg > 70 AND
english_avg > 70;
```
8.求出每门科目的总分,平均分,最高分,最低分,要求只显示平均分大于70的最后再按平均分由高到低排序:
```sql
SELECT
subject,
SUM(score) AS total_score,
AVG(score) AS avg_score,
MAX(score) AS max_score,
MIN(score) AS min_score
FROM (
SELECT 'chinese' AS subject, chinese AS score FROM student
UNION ALL
SELECT 'math' AS subject, math AS score FROM student
UNION ALL
SELECT 'english' AS subject, english AS score FROM student
) s
GROUP BY subject
HAVING AVG(score) > 70
ORDER BY AVG(score) DESC;
```
9.求出每门科目中不及格和及格的人数:
```sql
SELECT
subject,
SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS failed_count,
SUM(CASE WHEN score >= 60 THEN 1 ELSE 0 END) AS passed_count
FROM (
SELECT 'chinese' AS subject, chinese AS score FROM student
UNION ALL
SELECT 'math' AS subject, math AS score FROM student
UNION ALL
SELECT 'english' AS subject, english AS score FROM student
) s
GROUP BY subject;
```
阅读全文
相关推荐
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)