论文AI率99%?这几款降低ai率工具亲测好用,拒绝论文变“草稿”!

核心内容摘要

RMBG-2.0镜像免配置部署教程:一行命令启动,支持Windows/Linux/macOS
机箱系统热设计的关键一环:压降计算详解

KindEditor源码解析:WORD图片复制功能如何实现?

代码SELECT s.student_id, s.student_name, sub.subject_name, COUNT(e.subject_name) AS attended_exams FROM Students s CROSS JOIN Subjects sub LEFT JOIN Examinations e ON s.student_id e.student_id AND sub.subject_name e.subject_name GROUP BY s.student_id, s.student_name, sub.subject_name ORDER BY s.student_id, sub.subject_name; 分步解释

CROSS JOIN Students 和 Subjects这一步就是“配对所有学生和所有科目”。

比如 Alice Math、Alice Physics、Bob Math……一个不漏。

✅ 这样就保证了“即使没考试也要列出”。

LEFT JOIN Examinations把考试记录“贴”到上面的配对上。

如果某学生某科有考试记录就加上如果没有那一行的考试信息就是NULL。

用LEFT JOIN是为了保留左边的所有配对不会丢掉没考试的组合。

COUNT(e.subject_name)统计每个学生-科目组合实际考了多少次。

为什么不是COUNT(*)因为COUNT(*)会把“没考试”的行也数成 1它数的是“行数”。

而COUNT(e.subject_name)只数非空值——没考试时e.subject_name是NULL就不计入结果就是 0。

GROUP BY因为我们用了COUNT()聚合函数所以必须按学生科目分组。

否则数据库不知道“到底要统计谁的考试次数”。

ORDER BY题目要求按student_id和subject_name排序所以加上这句让结果整齐。

结果解题步骤

吧电影免费观看高清-吧电影免费观看高清应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123