排名

阅读(269) 标签: 排名, 名次,

功能:

按字段排名生成序号。本功能不改变记录顺序,返回结果保持原序。支持分区、多种排名规则、过滤前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