源数据表
姓名 | 语文 | 数学 | 英语 |
何艳 | 94 | 62 | 80 |
何冬梅 | 86 | 64 | 93 |
冯晨 | 90 | 64 | 74 |
彭勤 | 77 | 67 | 89 |
叶倩 | 63 | 68 | 83 |
曾德昌 | 90 | 69 | 93 |
曹乾刚 | 70 | 69 | 84 |
雷小露 | 79 | 70 | 79 |
余佳丽 | 93 | 71 | 99 |
赵林 | 78 | 71 | 77 |
邓明昊 | 81 | 72 | 87 |
邱志娟 | 84 | 74 | 87 |
马琴 | 63 | 74 | 76 |
王清秀 | 84 | 75 | 87 |
李晓斌 | 99 | 75 | 96 |
王川洪 | 89 | 76 | 71 |
肖妤翊 | 70 | 82 | 76 |
程飞娥 | 73 | 83 | 94 |
孙双米 | 76 | 83 | 98 |
张玲 | 85 | 83 | 93 |
周榕珍 | 70 | 84 | 76 |
刘芙蓉 | 90 | 84 | 74 |
王亚坤 | 70 | 84 | 71 |
柴俊 | 84 | 84 | 74 |
随婷婷 | 69 | 85 | 79 |
文森 | 76 | 87 | 85 |
李明 | 93 | 87 | 94 |
欧仁寿 | 90 | 90 | 85 |
王清容 | 97 | 91 | 80 |
罗秀丽 | 73 | 91 | 98 |
杨永艳 | 72 | 91 | 86 |
姚鹏 | 90 | 93 | 74 |
卢思彤 | 100 | 94 | 79 |
何刚 | 80 | 96 | 77 |
刘华平 | 84 | 96 | 74 |
马晓冬 | 95 | 99 | 98 |
尹玫 | 84 | 100 | 87 |
李金龙 | 81 | 100 | 99 |
利用SQL快速找出总成蜻排在前五名的同学。
解决方案
SELECT TOP 5 姓名,(语文+数学+英语) AS 总分
FROM [sheet1$]
ORDER BY 语文+数学+英语 DESC
利用TOP谓词查询前几条记录
本例的实现是在将数据降序排序的基础上利用TOP谓词取得前5条记录,即前5条分数最高的记录。TOP谓词可以返回指定范围内一定数量的记录,语法如下:
TOP N [PERCENT]
其中,PERCENT关键字可以省略,当省略时,N代表要获取记录的数量:当加上PERCENT关键字后,N代表要获取记录的百分比。比如要获取前50%的记录,可以使用以下语句:
TOP 50 PERCENT
在未对数据进行任何排序的情况下,TOP谓词将按照原始数据的默认排序取前N条记录。所以,在本例中,要实现查找考试成绩总分排在前5名的同学,必须将总分按照降序排序。
TOP PERCENT保留记录规律
当记录百分比数量计算为小数时,SQL将按照向上取整的方式取得记录的数量。例如,记录数为11条,执行TOP 30 PERCENT语句时,前30%的记录数应为3.3,向上取整后,结果将返回4条记录。