Excel表格文件分组归并——通过sql

发布于:2025-04-14 ⋅ 阅读:(25) ⋅ 点赞:(0)

将 Excel 表转换为 SQL 数据库并直接执行 SQL 查询以获得所需的输出。以下是使用 SQL 实现此目的的步骤:

第 1 步:将 Excel 数据导入 MySQL

假设您设置了 MySQL 数据库,则需要先将 Excel 数据导入到表中。您可以使用语句或工具(如 MySQL Workbench、phpMyAdmin 或 Python 库)来加载数据。LOAD DATApandasSQLAlchemy

以下是如何使用 MySQL Workbench 导入数据的示例:

  1. 将 Excel 文件转换为 CSV 格式。

  2. 使用命令将 CSV 文件加载到表中。LOAD DATA INFILE

或者直接使用navicat工具导入

LOAD DATA INFILE '/path/to/your/file.csv'
INTO TABLE lab_reports
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS; -- Skips the header row

第 2 步:用于对教师姓名进行分组和组合的 SQL 查询

将数据加载到表中后,您可以使用以下 SQL 查询按课程和实验 ID 对数据进行分组,并根据“提交开始时间”(提交开始时间)是否为 null 来分隔讲师。

SELECT 
    所属专业,
    课程编号 AS course_id,
    课程名称 AS course_name,
    实验项目编号 AS experiment_id,
    实验项目名称 AS experiment_name,
    GROUP_CONCAT(DISTINCT 
        CASE WHEN 提交开始时间 IS NOT NULL THEN 授课教师 ELSE NULL END 
        SEPARATOR ', '
    ) AS 有提交开始时间的讲师,
    GROUP_CONCAT(DISTINCT 
        CASE WHEN 提交开始时间 IS NULL THEN 授课教师 ELSE NULL END 
        SEPARATOR ', '
    ) AS 无提交开始时间的讲师
FROM 
    lab_reports
GROUP BY 
    所属专业, 课程编号, 课程名称, 实验项目编号, 实验项目名称
ORDER BY
    所属专业, 课程编号, 实验项目编号;

说明:

  1. 列顺序:完全按照您要求的顺序输出

    • 所属专业

    • 课程编号 (别名为course_id)

    • 课程名称 (别名为course_name)

    • 实验项目编号 (别名为experiment_id)

    • 实验项目名称 (别名为experiment_name)

    • 有提交开始时间的讲师

    • 无提交开始时间的讲师

  2. GROUP_CONCAT改进

    • 添加了DISTINCT关键字确保讲师姓名不重复

    • 明确指定了SEPARATOR ', '使结果更清晰

    • 使用CASE WHEN...ELSE NULL END确保逻辑清晰

  3. 分组和排序

    • 按照所属专业、课程编号和实验项目编号分组

    • 结果按所属专业、课程编号和实验项目编号排序

  4. 表名:假设数据存储在名为lab_reports的表中

您可以直接在MySQL客户端或应用程序中执行此SQL查询,获取符合您要求的分组结果。


网站公告

今日签到

点亮在社区的每一天
去签到