栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

子查询-获得最高分

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

子查询-获得最高分

传统方法是一种解析

MAX()
(或其他解析函数):

select *  from ( select s.student_id   , w.last_name   , w.first_name   , s.numeric_grade   , max(s.numeric_grade) over () as numeric_final_gradefrom grade sjoin section z  on s.section_id = z.section_idjoin student w  on s.student_id = w.student_id          where z.course_no = 230  and z.section_id = 100  and s.grade_type_pre = 'FI'     ) where numeric_grade = numeric_final_grade

但是我可能更喜欢使用FIRST(KEEP)。

select max(s.student_id) keep (dense_rank first order by s.numeric_grade desc) as student_id     , max(w.last_name) keep (dense_rank first order by s.numeric_grade desc) as last_name     , max(w.first_name) keep (dense_rank first order by s.numeric_grade desc) as first_na,e     , max(s.numeric_grade_name) as numeric_final_grade  from grade s  join section z    on s.section_id = z.section_id  join student w    on s.student_id = w.student_id where z.course_no = 230    and z.section_id = 100    and s.grade_type_pre = 'FI'

这两种方法相对于最初建议的好处是,您只扫描一次表,而无需第二次访问表或索引。

PS这些将返回不同的结果,因此它们略有不同。如果两个学生的最高分数相同,则分析功能将保持重复(这也是您的建议所要做的)。聚合函数将删除重复项,并在出现平局的情况下返回随机记录。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号