功能:
按字段排名生成序号。本功能不改变记录顺序,返回结果保持原序。支持分区、多种排名规则、过滤前N名/后N名。
语法:
排名 {<排名依据> [方向]} [选项] [命名 <排名的新列名>] [过滤] <过滤数量> [删除] [分区 <分区字段>]
参数:<排名依据> [方向]
参数<排名依据>是排名所依据的计算式,含单列。可多对,表示依次排序。不支持跨行和聚合。可选,省略参数名,缺省按原序排名。
参数[方向]是排名依据的方向。可选,省略参数名,缺省升序;类型是枚举,枚举值:从小到大、升序、从大到小、降序。
示例:
排名 SALARY 降序; 命名 薪资排名 //对员工表按SALARY降序排名,返回结果如下:
|
EID |
NAME |
DEPT |
SALARY |
薪资排名 |
|
1 |
Rebecca |
R&D |
7000 |
8 |
|
2 |
Ashley |
Finance |
11000 |
3 |
|
3 |
Rachel |
Sales |
9000 |
6 |
|
4 |
Emily |
HR |
7000 |
8 |
|
5 |
Ashley |
R&D |
16000 |
1 |
|
6 |
Matthew |
Sales |
11000 |
3 |
|
7 |
Alexis |
Sales |
9000 |
6 |
|
8 |
Megan |
Marketing |
11000 |
3 |
|
9 |
Victoria |
HR |
3000 |
10 |
|
10 |
Ryan |
R&D |
13000 |
2 |
参数:命名 <排名的新列名>
排名写入的新列名。
可选,不可省略参数名。与参数过滤不能同时使用,该参数省略时必须用后面的参数过滤来返回部分记录,不改变表结构。
示例:
排名 命名 行字段 //对员工表按袁旭计算排名,赋值为新列【行字段】,结果如下:
|
EID |
NAME |
DEPT |
SALARY |
行字段 |
|
1 |
Rebecca |
R&D |
7000 |
1 |
|
2 |
Ashley |
Finance |
11000 |
2 |
|
3 |
Rachel |
Sales |
9000 |
3 |
|
4 |
Emily |
HR |
7000 |
4 |
|
5 |
Ashley |
R&D |
16000 |
5 |
|
6 |
Matthew |
Sales |
11000 |
6 |
|
7 |
Alexis |
Sales |
9000 |
7 |
|
8 |
Megan |
Marketing |
11000 |
8 |
|
9 |
Victoria |
HR |
3000 |
9 |
|
10 |
Ryan |
R&D |
13000 |
10 |
参数:选项
重复值处理规则。
必填,省略参数名;枚举类型,枚举值如下:
- 自然:没有重复名次,[10,10,20,25,30,30]的标准排名是[1,2,3,4,5,6]。前4名即[10,10,20,25];
- 默认:缺省为默认,重复值用重复名次,但会占用新值的名次,[10,10,20,25,30,30]的默认排名是[1,1,3,4,5,5]。前4名是[10,10,20,25];
- 中式:重复值用重复名次,不占用新值的名次,[10,10,20,25,30,30]的中式排名是[1,1,2,3,4,4]。前4名是[10,10,20,25,30,30]。
示例:
排名 SALARY 降序; 命名 薪资排名 中式 //对员工表按SALARY降序排名,使用中式排名,返回结果如下:
|
EID |
NAME |
DEPT |
SALARY |
薪资排名 |
|
1 |
Rebecca |
R&D |
7000 |
2 |
|
2 |
Ashley |
Finance |
11000 |
4 |
|
3 |
Rachel |
Sales |
9000 |
3 |
|
4 |
Emily |
HR |
7000 |
2 |
|
5 |
Ashley |
R&D |
16000 |
6 |
|
6 |
Matthew |
Sales |
11000 |
4 |
|
7 |
Alexis |
Sales |
9000 |
3 |
|
8 |
Megan |
Marketing |
11000 |
4 |
|
9 |
Victoria |
HR |
3000 |
1 |
|
10 |
Ryan |
R&D |
13000 |
5 |
参数:过滤 过滤数量
这两个参数通常一起用,表示对排名结果进行过滤,只返回部分记录,即前N名、后N名、最大一名、最小一名。
参数过滤是过滤的方向,可选,省略参数名;使用参数命名时,不能使用本参数。枚举类型,4个枚举值:
- 前、后:前N名或后N名,必须和参数过滤数量一起用
- 最大、最小:最大、最小值对应的记录。
参数过滤数量是过滤的名次(前/后)或条数(最大/最小),过滤时必填,缺省值为1。
示例:
焦点表数据如下:
|
EID |
NAME |
DEPT |
SALARY |
|
1 |
Rebecca |
R&D |
7000 |
|
2 |
Ashley |
Finance |
11000 |
|
3 |
Rachel |
Sales |
9000 |
|
4 |
Emily |
HR |
7000 |
|
5 |
Ashley |
R&D |
16000 |
|
6 |
Matthew |
Sales |
11000 |
|
7 |
Alexis |
Sales |
9000 |
|
8 |
Megan |
Marketing |
11000 |
|
9 |
Victoria |
HR |
3000 |
|
10 |
Ryan |
R&D |
13000 |
排名 SALARY 最大 //焦点表按SALARY排名,取最大值对应的所有记录,返回结果如下:
|
EID |
NAME |
DEPT |
SALARY |
|
5 |
Ashley |
R&D |
16000 |
排名 SALARY 前 3 //焦点表按SALARY升序排名,取前3名对应的记录,返回结果如下:
|
EID |
NAME |
DEPT |
SALARY |
|
1 |
Rebecca |
R&D |
7000 |
|
4 |
Emily |
HR |
7000 |
|
9 |
Victoria |
HR |
3000 |
排名 SALARY 升序; 中式;前 3 //焦点表按SALARY升序排名,按中式规则取前3名对应的记录,返回结果如下:
|
EID |
NAME |
DEPT |
SALARY |
|
1 |
Rebecca |
R&D |
7000 |
|
3 |
Rachel |
Sales |
9000 |
|
4 |
Emily |
HR |
7000 |
|
7 |
Alexis |
Sales |
9000 |
|
9 |
Victoria |
HR |
3000 |
参数:[删除]
使用过滤参数时,删除符合条件的记录。
可选,不可省略参数名。
示例:
排名 SALARY 升序; 中式;前 3 删除 //焦点表按SALARY升序排名,按中式规则删除前3名对应的记录,返回结果如下:
|
EID |
NAME |
DEPT |
SALARY |
|
2 |
Ashley |
Finance |
11000 |
|
5 |
Ashley |
R&D |
16000 |
|
6 |
Matthew |
Sales |
11000 |
|
8 |
Megan |
Marketing |
11000 |
|
10 |
Ryan |
R&D |
13000 |
参数:分区
按分区进行排名。
可选,不可省略参数名。
示例:
排名 SALARY 升序; 中式;前 1 分区 DEPT // 按部门分区,薪资升序中式排名,每个部门取第1名,返回结果如下:
|
EID |
NAME |
DEPT |
SALARY |
|
2 |
Ashley |
Finance |
11000 |
|
9 |
Victoria |
HR |
3000 |
|
8 |
Megan |
Marketing |
11000 |
|
1 |
Rebecca |
R&D |
7000 |
|
3 |
Rachel |
Sales |
9000 |
|
7 |
Alexis |
Sales |
9000 |