返回

SQL精选:“考试分数”系列习题解析,极大值与极小值巧妙运用

后端

前言

作为一名SQL爱好者,我一直在探索和学习各种有趣的问题。最近,我接触到了牛客网在线编程SQL实战中的“考试分数”系列习题,其中有不少题目都非常巧妙,需要对SQL的各种函数和语法有深入的理解才能解决。在本文中,我将分享其中几道典型题目的详细解析,希望能对各位读者有所帮助。

题目解析

题目1:查询最高分和最低分

SELECT MAX(score) AS highest_score, MIN(score) AS lowest_score
FROM exam_scores;

解析:

这道题很简单,就是查询所有考试成绩中的最高分和最低分。我们可以分别使用MAX()和MIN()函数来实现。其中,MAX()函数返回一组数据中的最大值,MIN()函数返回一组数据中的最小值。

题目2:查询每个科目的最高分和最低分

SELECT subject, MAX(score) AS highest_score, MIN(score) AS lowest_score
FROM exam_scores
GROUP BY subject;

解析:

这道题与上一题类似,但需要对数据进行分组,以便分别查询每个科目的最高分和最低分。我们首先使用GROUP BY子句将数据按科目进行分组,然后分别使用MAX()和MIN()函数计算每个组中的最大值和最小值。

题目3:查询每个班级中分数最高的3名学生

SELECT student_name, score
FROM exam_scores
ORDER BY score DESC
LIMIT 3;

解析:

这道题需要查询每个班级中分数最高的3名学生。我们首先使用ORDER BY子句对数据按分数进行降序排序,然后使用LIMIT子句限制只查询前3条数据。需要注意的是,如果有多个班级的话,需要先使用GROUP BY子句将数据按班级进行分组,再进行排序和限制。

题目4:查询每个班级中分数最低的3名学生

SELECT student_name, score
FROM exam_scores
ORDER BY score ASC
LIMIT 3;

解析:

这道题与上一题类似,但需要查询每个班级中分数最低的3名学生。我们首先使用ORDER BY子句对数据按分数进行升序排序,然后使用LIMIT子句限制只查询前3条数据。同样地,如果有多个班级的话,需要先使用GROUP BY子句将数据按班级进行分组,再进行排序和限制。

总结

以上只是“考试分数”系列习题中的一部分,还有很多其他有趣的问题值得探索。我希望通过本文的分享,能够帮助各位读者对SQL的各种函数和语法有更深入的理解,并在实际工作中灵活运用这些知识来解决各种数据分析问题。