将 Excel 表转换为 SQL 数据库并直接执行 SQL 查询以获得所需的输出。以下是使用 SQL 实现此目的的步骤:
第 1 步:将 Excel 数据导入 MySQL
假设您设置了 MySQL 数据库,则需要先将 Excel 数据导入到表中。您可以使用语句或工具(如 MySQL Workbench、phpMyAdmin 或 Python 库)来加载数据。LOAD DATA
pandas
SQLAlchemy
以下是如何使用 MySQL Workbench 导入数据的示例:
将 Excel 文件转换为 CSV 格式。
使用命令将 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
所属专业, 课程编号, 实验项目编号;
说明:
列顺序:完全按照您要求的顺序输出
所属专业
课程编号 (别名为course_id)
课程名称 (别名为course_name)
实验项目编号 (别名为experiment_id)
实验项目名称 (别名为experiment_name)
有提交开始时间的讲师
无提交开始时间的讲师
GROUP_CONCAT改进:
添加了
DISTINCT
关键字确保讲师姓名不重复明确指定了
SEPARATOR ', '
使结果更清晰使用
CASE WHEN...ELSE NULL END
确保逻辑清晰
分组和排序:
按照所属专业、课程编号和实验项目编号分组
结果按所属专业、课程编号和实验项目编号排序
表名:假设数据存储在名为
lab_reports
的表中
您可以直接在MySQL客户端或应用程序中执行此SQL查询,获取符合您要求的分组结果。