mysql如何查询成绩前5名_sql 语句查询 前5名后5名的成绩

这篇博客探讨了如何使用SQL查询语句获取表格中成绩排名前五的记录。作者提到了两种方法,分别是通过升序和降序排序结合UNION ALL操作,以及利用ROW_NUMBER()窗口函数。博客内容涵盖了SQL Server的版本兼容性问题,并考虑了分数相同的情况。此外,还讨论了如何处理并输出相同分数的排名问题。
摘要由CSDN通过智能技术生成

7a43036ce0976ffde891b55746b9bb7f.png

蝴蝶不菲

两种办法:分别求最大和最小,然后union allselect * from(select * from table order by 成绩) where rownum<=5union allselect * from(select * from table order by 成绩 desc) where rownum<=5利用排序,找到每个人的位置,然后输出。排序的方法很多,可以用rownum排序,也可以用row_number()over()排序我用row_number()over()写一个select a.姓名,a.成绩 from(select row_number()over(order by 成绩) num,姓名,成绩 from table) a where a.num<=5 ora.num>=(select count(*)-5 from table)我没实验,不过就算有问题也应该不大。sqlserver的版本是啥?是2005以上么?如果是那么利用那个row_number的应该也可以,不过为了让分数一样的人都出来,那么最好改为这种情况是假设前五出现分数相同的话,假如前五名有六个人的情况,不过我没有输出名次,另外我上面的那种写法也可以试试,sqlserver好像也可以。不过如果你要是sql2005以前的版本那时sqlserver还没有这几个开窗函数,那就稍微有点麻烦了。select 姓名,成绩 fromselect rank()over(order by 成绩) num,rank()over(order by 成绩 desc) num_desc,姓名,成绩 from table) a where a.num<=5 or a.num_desc<=5 order by 成绩 desc

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值