💡
原文英文,约500词,阅读约需2分钟。
📝
内容提要
通过学生表和科目表的CROSS JOIN生成所有组合,再用LEFT JOIN与考试表连接,统计每位学生参加每门考试的次数,确保未参加考试的学生也能显示,最终结果按学生和科目分组。
🎯
关键要点
- 问题陈述:需要统计每位学生参加每门考试的次数,结果应包括所有学生和科目,即使学生未参加某科目的考试。
- 解决方案的关键步骤:
- 1. 组合所有学生和科目:使用CROSS JOIN生成所有学生和科目的组合,确保每位学生与每个科目配对。
- 2. 统计考试参加次数:使用LEFT JOIN与考试表连接,统计每位学生参加每门考试的次数,未参加的考试计数为0。
- 3. 分组和排序结果:按学生ID、学生姓名和科目名称分组,计算参加考试的次数,并按学生ID和科目名称排序。
- SQL查询示例:使用SELECT语句结合CROSS JOIN和LEFT JOIN实现统计。
- 示例输入表:包括学生表、科目表和考试表的结构。
- 示例输出:展示每位学生在每门科目的考试参加次数。
- 输出解释:详细说明每位学生在各科目考试中的参加情况。
- 查询有效性:CROSS JOIN确保所有学生-科目组合被包含,LEFT JOIN确保未参加考试的学生也能显示,COUNT函数计算参加次数,GROUP BY和ORDER BY用于结果的清晰组织。
➡️