返回

数据库中如何获取最高分数和正确率?

mysql

从数据库中获取最高分数和正确率

简介

在数据库管理中,经常需要从数据集中提取特定信息。本文将指导你如何使用 SQL 查询从数据库中获取最高分数和正确率,以深入了解个人在考试中的表现。我们将使用一个示例表来演示查询过程,并提供一个分步指南和实际示例。

准备数据

为了演示,我们将使用两个示例表:info_personinfoExamResultinfo_person 表包含个人信息,如用户名、姓名和职业,而 infoExamResult 表包含考试结果,如考试日期、答案和分数。

INSERT INTO info_person (userUsername, userFirstNameTH, userLastNameTH, infoOccupationName, userOrgName) VALUES
('user1', 'John', 'Doe', 'Developer', 'Company A'),
('user2', 'Jane', 'Doe', 'Designer', 'Company B'),
('user3', 'John', 'Smith', 'Engineer', 'Company C');

INSERT INTO infoExamResult (personID, datetimeStart, optAnswer, resultPoint, resultPercentage) VALUES
(1, '2024-03-18', 'COMMIT', 80, 80),
(1, '2024-03-20', 'COMMIT', 90, 90),
(2, '2024-03-19', 'COMMIT', 75, 75),
(3, '2024-03-21', 'COMMIT', 85, 85);

编写查询

要获取最高分数和正确率,我们可以使用以下 SQL 查询:

SELECT
  userUsername,
  MAX(resultPoint) AS HighestResultPoint,
  MAX(resultPercentage) AS HighestResultPercentage
FROM info_person
INNER JOIN infoExamResult
  ON infoExamResult.personID = info_person.personID
WHERE
  datetimeStart BETWEEN '2024-03-18' AND '2024-03-26'
AND optAnswer = 'COMMIT'
GROUP BY
  userUsername;

查询解释

  • 我们使用 SELECT 子句选择 userUsername、最高分数 (HighestResultPoint) 和最高正确率 (HighestResultPercentage)。
  • 我们使用 INNER JOIN 连接 info_personinfoExamResult 表,以便将个人信息与考试结果关联起来。
  • 我们使用 WHERE 子句过滤日期范围为 2024-03-182024-03-26 之间,并且 optAnswer 等于 COMMIT 的记录。
  • 我们使用 GROUP BY 子句对 userUsername 进行分组,以便对每个用户获得最高分数和正确率。

示例输出

运行查询后,我们会得到以下输出:

userUsername | HighestResultPoint | HighestResultPercentage
-------------|--------------------|--------------------------
user1        | 90                 | 90
user2        | 75                 | 75
user3        | 85                 | 85

结论

本指南详细介绍了如何使用 SQL 查询从数据库中获取最高分数和正确率。通过理解查询过程和示例表,你可以轻松地提取特定信息以进行分析和报告。

常见问题解答

问:我可以获取特定日期范围内的结果吗?
答:是的,你可以在 WHERE 子句中指定日期范围。

问:我可以获取不同考试类型或科目的结果吗?
答:是的,你可以在 WHERE 子句中添加额外的条件来过滤结果。

问:我可以对结果进行排序吗?
答:是的,你可以在 ORDER BY 子句中指定排序顺序。

问:我可以使用其他聚合函数吗?
答:是的,你可以在 SELECT 子句中使用其他聚合函数,如 MIN()AVG()COUNT()

问:我可以在查询中使用子查询吗?
答:是的,你可以在查询中使用子查询来执行更复杂的分析。