MySQL统计求每个月的最高分和最低分实现流程

流程表格

步骤 描述
步骤一:创建数据表 创建一个名为scores的数据表,包含idstudent_idscorecreated_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统计求每个月的最高分和最低分的完整流程。