第十节 利用TOP-N查询对记录进行筛选
在实际工作中,我们经常会遇到诸如查询最热门的10篇文章、业绩最好的20名员工、收入最高30人或企事业世界500强等诸如此类返回满足条件的n条记录的情况,在SQL语言中,可以使用TOP关键字来实现。
一、TOP-N查询的基本语法
Select TOP number [PERCENT] column_name(s)
FROM table_name
Where condition;
这里“number”是一个正整数,代表将要提取的记录的行数;“column(s)”是字段列表,就是查询要显示的列名;“table_name”是被操作的表的名字;“condition”对记录进行筛选的条件。
TOP关键字在SQL语言中用来限制返回结果集中的记录条数,而PERCENT关键字用来限制返回结果在记录集中所占百分比数相当的记录条数。其使用方法下面我们来详细的介绍:
二、返回确定数目的记录个数
语法格式:Select TOP n <字段列表> FROM <表名> [筛选条件]
其中,n为要返回结果集中的记录条数。
下面以实例来说明其用法,如在考试管理数据库中,我们有一张名为“考试成绩”的表,记录的是考生的考试成绩数据,像如下图10-1所示:
图10-1:学生考试成绩表
现在我们想要找出成绩最高的10考生,我们可以使用如下的SQL查询:
Select TOP 10 考生号, 姓名, 语文, 数学, 英语, 综合, (语文+数学+英语+综合) AS 总分 FROM 考试成绩 ORDER BY (语文+数学+英语+综合) DESC;
如图10-2所示:
图10-2:查询总分最高的前10名考生信息
执行此查询,我们想根的考试成绩最好的前10名考生就展现在我们面前,结果如图10-3所示:
图10-3:查询出的总分最高的前10名考生
三、返回结果集中指定百分比的记录数
有时候,我们想了解在整个集体中前百分之几的个体的情况,我们就会用到TOP-N PERCENT格式的查询语句,其语法格式:
Select TOP n
PERCENT <字段列表> FROM <表名> [查询条件];
其中,n为所返回的记录数所占结果集中记录数目的百分比数。下面以实例来说明:
我们还是使用前面的“考试成绩”表来说明问题,现在我们想要了解总分靠前的15%的考生的情况,我们可以利用这样的SQL查询语句:
Select TOP 15 PERCENT 考生号, 姓名, 语文, 数学, 英语, 综合, (语文+数学+英语+综合) AS 总分 FROM 考试成绩 ORDER BY (语文+数学+英语+综合) DESC;
如图10-4所示:
图10-4:提取总分靠准的15%的考生信息的查询
运行该查询,就可以了解到总分最靠前的15%的考生的信息,如图10-5所示:
图10-5:总分最靠前的15%的考生的查询结果
在具体使用过程中,可以结合条件子句(筛选记录)和排序子句(如何进行排序)等实现较为丰富的功能,这里就不一一说明了,大家可以自行探索。