力扣-高频 SQL 50 题(基础版)-1280. 学生们参加各科测试的次数

发布时间:2026/9/23 4:18:31

力扣-高频 SQL 50 题(基础版)-1280. 学生们参加各科测试的次数 一、完整建表 SQLMySQL 语法二、需求查询出每个学生参加每一门科目测试的次数结果按student_id和subject_name排序三、 思路1.插入数据构造表格2.写题表层视觉迷惑点下面这会是大部分人第一次的答案(相似)一定会觉得第二张Subjects表是多余的没必要关联因为Subjects表的仅有的数据Subjects_name刚好第三个表也有所以大部分人一定会在join联合时直接关联Students表Examinations表而舍弃Subjects表# Write your MySQL query statement below select s.student_id,s.student_name,e.subject_name,count(subject_name) attended_exams from Students s join Examinations e on e.student_ids.student_id group by s.student_id,s.student_name,e.subject_name order by s.student_id asc,s.student_name asc展示结果(部分正确)底层逻辑漏洞核心INNER JOIN Students Examinations只会保留有考试记录的「学生 科目」组合学生 Bob 没考过 Physics 物理 → 这条组合直接从结果里消失无法显示次数 0学生 Alex 一门考试都没参加 → 他的 3 门科目全部消失输出里完全看不到 Alex 题目硬性要求每个学生、每一门学校开设科目都要展示没参加考试次数写 0。想要拿到「全部学生 × 全部科目」完整清单必须借助Subjects全科目表做笛卡尔积Subjects 表真实作用存储学校所有开设课程全集不受学生考试行为影响通过 join 和学生表组合强制生成「每个学生匹配全部 3 门科目」的完整行后续再LEFT JOIN考试记录没匹配到考试的行考试字段自动为 NULLCOUNT 统计自动算出 0 次保证输出结果和题目「预期结果」完全一致不会丢失缺考科目、零考试学生。标准满分正确代码# Write your MySQL query statement below SELECT s.student_id, s.student_name, sub.subject_name, COUNT(e.subject_name) AS attended_exams FROM Students s -- 第一步交叉连接学生全部科目生成完整笛卡尔积核心依赖Subjects表 CROSS JOIN Subjects sub -- 第二步左连接考试记录保留所有学生科目无考试填充NULL 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 ASC, sub.subject_name ASC;同类题型通用解题模板总结笔记举一反三题型特征需要展示「所有 A × 所有 B」无匹配数据显示 0必须准备一张全集维度表本题就是 Subjects 科目全集表JOIN主表 × 全集表生成完整组合LEFT JOIN业务记录表本题 ExaminationsCOUNT (业务表字段) 实现无匹配时计数 0GROUP BY 全部非聚合字段ORDER BY 按题目要求排序同类练习题举例统计每个门店每种商品的销量没卖出过显示 0统计每个员工每月考勤天数当月无考勤显示 0核心思路和本题完全一致都需要一张全集维度表做交叉连接拓展如果题目只给Students和Examinations两张表没有专门存储全部科目的表怎么办os我是面试官就这样出题结合生活场景比如大学期末-每场考试都必定至少有一个人参加不存在有课程没有学生参加这个就含蓄地表示Examinations表里拥有原先Subjects里所有的科目这样大学生就会困惑许久核心思路用子查询SELECT DISTINCT subject_name FROM Examinations虚拟生成「科目全集临时集合」替代原本的Subjects表再和学生表交叉连接。完整可运行 SQLSELECT s.student_id, s.student_name, sub.subject_name, COUNT(e.subject_name) AS attended_exams FROM Students s -- 虚拟科目表从考试记录里去重拿到全部存在过的科目 JOIN ( SELECT DISTINCT subject_name FROM Examinations ) AS sub(subject_name) 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 ASC, sub.subject_name ASC;优缺点✅ 优点不需要物理Subjects表仅靠两张业务表完成需求❌ 缺点如果存在一门全校开设、但从来没有任何学生考过的科目这门课会直接丢失无法展示适用场景题目明确说明所有学校开设的科目都至少有一名学生参加过考试
延伸阅读

更多相关文章

2026/9/23 5:12:34

GPT与Codex关系解析:从注册到API接入的完整使用教程

1. 从零理解 GPT 与 Codex 的真实关系很多人第一次接触这两个词的时候,脑子里是一团浆糊的。GPT 和 Codex 到底是什么关系?是同一个东西的两个名字,还是两个完全独立的产品?这个问题不搞清楚,后面所有的操作都会走弯路…

2026/9/23 5:12:34

从SKILL.md到脚本:如何把安全审计做成AI Agent技能包

最近半年,AI Agent 圈子里最火的一个词就是 skill。Claude、Codex、OpenCode 这些工具先后都加入了 skill 机制,GitHub 上也冒出来一堆"技能库",里面全是别人写好的 SKILL.md。说实话,一开始我并不太理解这玩意和普通的…

2026/9/23 5:12:34

Chinese-CLIP中文图文检索系统:CPU本地部署实战指南

简介:本资源是一份面向计算机视觉课程学习者与本科生的图文跨模态检索系统实践项目,聚焦Chinese-CLIP模型在中文场景下的实际应用,适用于期末大作业、课程设计及AI入门实战。压缩包共59个文件,含40个Python源码(涵盖ap…

2026/9/23 5:12:34

合同类别最佳实践:5类核心模式选型指南与避坑详解

合同类别最佳实践:5类核心模式选型指南与避坑详解 配置环境就卡半天,往往不是因为你手慢,而是因为你没搞懂底层逻辑。很多团队在微服务架构中处理合同数据时,习惯性地堆砌业务逻辑,导致代码耦合严重,一旦需求变更,改一行代码就得排查三个模块。这种“…

2026/9/23 5:07:33

告别配置噩梦:用Python写个提前还款计算器,性能优化实操

告别配置噩梦:用Python写个提前还款计算器,性能优化实操 装库报错、路径冲突、环境版本打架,是不是每次搞点开发配置环境就卡半天?这种痛苦我懂。其实很多工具类小项目,根本不需要复杂的工程化结构,核心逻辑一旦跑通,剩下的就是 性能优化…

2026/9/22 10:02:42

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/22 9:07:39

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/23 0:01:54

3个实战技巧搞定形式英语:从看教程到跑通性能优化

3个实战技巧搞定形式英语:从看教程到跑通性能优化 看了一堆教程还是不会写项目?别慌,这种“眼高手低”的困境在开发者圈子里太常见了。很多人以为卡点在语法,其实真正拦路虎是缺乏将知识点串联成完整链路的能力。今天咱们不聊虚的,直接拿【形式英语】这…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码