SQL练习疑问:我的查询与正确答案结果一致为何被判错?
「找出最受欢迎的教室」SQL查询错误原因解析
你的查询存在两个核心问题
- 输出不符合题目要求:题目明确要“找出最受欢迎的教室”,只需要返回
classroom字段即可,但你的语句额外返回了count字段,这可能直接触发了平台的判错规则。 - 无法覆盖多教室并列第一的场景:
- 如果有3个甚至更多教室的使用次数都是最高值,你的
limit 2只能返回其中2个,漏掉了其他并列的教室;而正确语句会把所有达到最高使用次数的教室都找出来,这才符合“最受欢迎”的完整定义——所有并列第一的都属于最受欢迎范畴。 - 哪怕当前你测试的数据集里只有2个并列第一,平台的测试用例大概率包含了多并列的场景,导致你的结果不完整,所以被判错。
- 如果有3个甚至更多教室的使用次数都是最高值,你的
语句对比
你的查询语句:
select classroom, count (classroom) as count from Schedule group by classroom order by count desc limit 2
正确查询语句:
select classroom from Schedule group by classroom having count(classroom) = (select count (classroom) as count from Schedule group by classroom order by count desc limit 1)
关键差异总结
正确语句通过子查询先拿到最高的使用次数,再用having子句筛选出所有使用次数等于这个最大值的教室,保证所有并列第一的教室都被返回,而不是固定只取前2个。同时它只返回题目要求的classroom字段,没有多余输出。
内容的提问来源于stack exchange,提问作者Vladimir Kim
相关产品推荐
相关产品推荐

