Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » OLAP 支持 » SQL Anywhere 中的窗口函数 » 窗口秩函数

 

PERCENT_RANK 函数

Similar to the PERCENT function, the PERCENT_RANK function returns the rank for the value in the column specified in the window's ORDER BY clause, but expressed as a fraction between 0 an 1, calculated as (RANK - 1)/(–1).

随着窗口在输入行中向下移动,会计算在窗口的 ORDER BY 子句中所指定的表达式的秩。当 ORDER BY 子句包括多个表达式时,若第一个表达式与相邻行具有相同值,则第二个及后续表达式将用于区分并列情况。NULL 值排在任何其它值的前面(在升序序列中)。

示例 1

以下示例返回按性别显示 New York 雇员薪水排位的结果集。该结果使用百分比数按降序列出排位并按性别分区。

SELECT DepartmentID, Surname, Salary, Sex,
    PERCENT_RANK( ) OVER ( PARTITION BY Sex
      ORDER BY Salary DESC ) AS PctRank
  FROM Employees 
  WHERE State IN ( 'NY' );

此查询会返回以下结果:

DepartmentID Surname Salary Sex PctRank
1 200 Martel 55700.000 M 0.0
2 100 Guevara 42998.000 M 0.333333333
3 100 Soo 39075.000 M 0.666666667
4 400 Ahmed 34992.000 M 1.0
5 300 Davidson 57090.000 F 0.0
6 400 Blaikie 54900.000 F 0.333333333
7 100 Whitney 45700.000 F 0.666666667
8 400 Wetherby 35745.000 F 1.0

由于按性别 (Sex) 划分输入,所以分别对男雇员和女雇员执行 PERCENT_RANK 计算。

示例 2

以下示例返回 Utah 和 Arizona 的一些女雇员的列表并根据薪水以降序顺序排列她们。这里的 PERCENT_RANK 函数用于以降序顺序提供累计总数。

SELECT Surname, Salary, 
     PERCENT_RANK ( ) OVER ( ORDER BY Salary DESC ) "Rank"
     FROM Employees 
WHERE State IN ( 'UT', 'AZ' ) AND Sex IN ( 'F' );

此查询会返回以下结果:

Surname Salary Rank
1 Shishov 72995.00 0
2 Jordan 51432.00 0.25
3 Hildebrand 45829.00 0.5
4 Bigelow 31200.00 0.75
5 Bertrand 29800.00 1
使用 PERCENT_RANK 查找最高和最低百分点

您可以使用 PERCENT_RANK 在数据集中查找最高或最低的百分点。在以下示例中,查询会返回其薪水在数据集的最高的五个百分点之内的男雇员。

SELECT * 
FROM ( SELECT Surname, Salary, 
       PERCENT_RANK ( ) OVER ( ORDER BY Salary DESC ) "Rank"
       FROM Employees 
       WHERE Sex IN ( 'M' )  ) 
       AS DerivedTable ( Surname, Salary, Percent )
WHERE Percent < 0.05;

此查询会返回以下结果:

Surname Salary Percent
1 Scott 96300.00 0
2 Sheffield 87900.00 0.025
3 Lull 87900.00 0.025

有关 PERCENT_RANK 函数语法的详细信息,请参见PERCENT_RANK 函数 [Ranking]