📜  在 MS SQL Server 中选择顶部(1)

📅  最后修改于: 2023-12-03 14:51:02.615000             🧑  作者: Mango

在 MS SQL Server 中选择顶部

在 MS SQL Server 中,我们可以使用 SELECT TOP 语句来选择表中的顶部数据。这个功能在我们需要获取数据中的前几行或者前几个百分比时特别有用。

语法
SELECT TOP (expression) [PERCENT]
    [WITH TIES] column_name(s)
FROM table_name
WHERE [condition];

在上述语法中,我们可以看到以下参数:

  • (expression):表示我们需要选择的行数或百分比,可以是一个数字或一个带变量的表达式。
  • PERCENT:指定我们是否需要选择一个百分比,而非行数。在这个参数后面需要指定一个数字,表示我们需要选择的百分比。
  • WITH TIES:如果两行的数据在选择的数据中排名一样,那么我们可以通过这个参数将两行都包含在选择结果中。
  • column_name(s):表示我们需要选择的列名,可以选取多个列用逗号分隔。
  • table_name:数据来源的表名。
  • condition:可选的筛选条件。
示例

下面是一些使用 SELECT TOP 语句的示例。

假设有一个名为 students 的表,其中有以下记录:

ID | Name   | Grade
---|--------|------
1  | Alice  | 90
2  | Bob    | 80
3  | Charlie| 85
4  | David  | 88
5  | Elise  | 92
6  | Frank  | 89
7  | Grace  | 78
8  | Henry  | 91
  1. 选择前 3 条记录
SELECT TOP 3 ID, Name, Grade
FROM students
ORDER BY Grade DESC;

结果将为:

ID | Name   | Grade
---|--------|------
5  | Elise  | 92
8  | Henry  | 91
1  | Alice  | 90

在这个示例中,我们首先指定需要选择的前 3 条记录,然后通过 ORDER BY 子句按成绩从高到低排序。最后返回选择的列的数据。

  1. 选择百分之 40 的记录
SELECT TOP 40 PERCENT ID, Name, Grade
FROM students
WHERE Grade >= 80
ORDER BY Grade DESC;

结果将为:

ID | Name   | Grade
---|--------|------
1  | Alice  | 90
5  | Elise  | 92
8  | Henry  | 91
4  | David  | 88
6  | Frank  | 89
3  | Charlie| 85

在这个示例中,我们首先指定需要选择的前 40% 的记录,然后通过 WHERE 子句筛选出成绩不低于 80 的记录,最后按成绩从高到低排序。最后返回选择的列的数据。

  1. 包含排名相同的记录
SELECT TOP 3 WITH TIES ID, Name, Grade
FROM students
ORDER BY Grade DESC;

结果将为:

ID | Name   | Grade
---|--------|------
5  | Elise  | 92
8  | Henry  | 91
1  | Alice  | 90
6  | Frank  | 89
4  | David  | 88

在这个示例中,我们通过 WITH TIES 参数包含了排名相同的记录。这样我们就会得到完整的前 3 名,包括排名相同的数据。