在数据库查询中,经常需要根据某些条件筛选出数据集中的顶部或底部记录。例如,可能想要找出销售额最高的前10名销售人员,或者找出销售额最低的后10名销售人员。本文将介绍如何使用SQL查询语句来实现这些功能,并提供示例代码供参考。
假设有一个名为vSalesPerson
的视图,其中包含了所有销售人员的信息,包括他们的姓名和去年的销售额。如果想要找出去年销售额最高的前10名销售人员,可以使用TOP
子句来实现。
SELECT TOP 10 FirstName, LastName, SalesLastYear
FROM Sales.vSalesPerson
ORDER BY SalesLastYear DESC;
在这个查询中,首先按照销售额降序排序,然后使用TOP 10
来选择前10条记录。这样,就可以得到销售额最高的前10名销售人员。
如果想要找出销售额最低的后10名销售人员,可以稍微修改一下查询语句,将排序方式改为升序。
SELECT TOP 10 FirstName, LastName, SalesLastYear
FROM Sales.vSalesPerson
ORDER BY SalesLastYear ASC;
在这个查询中,按照销售额升序排序,然后使用TOP 10
来选择前10条记录。这样,就可以得到销售额最低的后10名销售人员。
如果想要在获取底部记录的同时,按照销售人员的姓氏进行排序,可以使用公共表表达式(CTE)来实现。
WITH CTE_SalesPerson (FirstName, LastName, SalesLastYear)
AS (
SELECT TOP 10 FirstName, LastName, SalesLastYear
FROM Sales.vSalesPerson
ORDER BY SalesLastYear ASC
)
SELECT FirstName, LastName, SalesLastYear
FROM CTE_SalesPerson
ORDER BY LastName;