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 の Window 関数 » Window ランキング関数

 

PERCENT_RANK 関数

PERCENT 関数と同様に、PERCENT_RANK 関数はウィンドウの ORDER BY 句で指定されたカラムの値についてランクを返します。ただし、ランクは 0 ~ 1 の小数として表され、(RANK - 1)/(–1) として計算されます。

ウィンドウが入力ローを移動するのに合わせて、ウィンドウの ORDER BY 句で指定された式でランクが計算されます。ORDER BY 句に複数の式が含まれる場合は、最初の式によって隣接ローで同じ値になるときに同順の発生を避けるために、2 番目以降の式が使用されます。NULL 値はその他の値よりも前にソートされます (昇順の場合)。

例 1

次の例は、ニューヨークの従業員の給与ランキングを性別ごとに示す結果セットを返します。結果セットは、小数のパーセンテージを使用して降順にランキングされ、性別ごとに分けられます。

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

次の例は、ユタ州とアリゾナ州の女性従業員のリストを返し、給与の多い順にランクしたものです。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 関数を使用して、データ・セット内の最上位または最下位の百分位数を検索できます。次の例では、クエリは給与額についてデータ・セット内で上位 5 % の男性従業員を返します。

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 関数 [ランキング]を参照してください。