MySQL统计求每个月的最高分和最低分实现流程
流程表格
步骤 | 描述 |
---|---|
步骤一:创建数据表 | 创建一个名为scores 的数据表,包含id 、student_id 、score 和created_at 四个字段 |
步骤二:插入测试数据 | 向scores 表中插入一些测试数据,包含不同月份和分数的记录 |
步骤三:编写查询语句 | 编写查询语句,使用GROUP BY 和聚合函数MAX() 和MIN() 对每个月的分数进行统计 |
步骤四:执行查询 | 执行查询语句,并获取结果 |
步骤五:显示结果 | 将查询结果显示出来 |
步骤详解
步骤一:创建数据表
首先,我们需要创建一个名为scores
的数据表,用于存储学生每次考试的成绩。数据表包含以下字段:
id
:主键,用于唯一标识每条记录student_id
:学生ID,用于关联学生表score
:考试成绩created_at
:创建时间,用于记录成绩录入的时间
下面是创建数据表的SQL语句:
CREATE TABLE scores (
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
score INT,
created_at DATETIME
);
步骤二:插入测试数据
为了演示统计每个月的最高分和最低分,我们需要向scores
表中插入一些测试数据。数据中包含不同月份和不同分数的记录。
下面是插入测试数据的SQL语句:
INSERT INTO scores (student_id, score, created_at) VALUES
(1, 90, '2021-01-01 00:00:00'),
(1, 80, '2021-01-05 00:00:00'),
(1, 95, '2021-02-10 00:00:00'),
(1, 85, '2021-02-15 00:00:00'),
(1, 70, '2021-03-20 00:00:00'),
(1, 75, '2021-03-25 00:00:00'),
(2, 85, '2021-01-10 00:00:00'),
(2, 75, '2021-01-15 00:00:00'),
(2, 90, '2021-02-20 00:00:00'),
(2, 80, '2021-02-25 00:00:00'),
(2, 95, '2021-03-01 00:00:00'),
(2, 85, '2021-03-05 00:00:00');
步骤三:编写查询语句
接下来,我们需要编写查询语句,使用GROUP BY
和聚合函数MAX()
和MIN()
对每个月的分数进行统计。
下面是查询语句的SQL代码和注释:
SELECT
MONTH(created_at) AS month, -- 从创建时间中提取月份
MAX(score) AS max_score, -- 求最高分
MIN(score) AS min_score -- 求最低分
FROM
scores
GROUP BY
MONTH(created_at) -- 按月份分组
ORDER BY
MONTH(created_at) -- 按月份升序排序
步骤四:执行查询
执行查询语句,并获取结果。你可以使用MySQL的命令行工具或者MySQL的客户端工具来执行查询。
步骤五:显示结果
将查询结果显示出来,可以选择将结果输出到命令行界面或者在应用程序中进行展示。
类图
classDiagram
class Score {
-id: int
-studentId: int
-score: int
-createdAt: Date
+getId(): int
+getStudentId(): int
+getScore(): int
+getCreatedAt(): Date
}
以上就是实现MySQL统计求每个月的最高分和最低分的完整流程。