PERCENT 関数と同様に、PERCENT_RANK 関数はウィンドウの ORDER BY 句で指定されたカラムの値についてランクを返します。ただし、ランクは 0 ~ 1 の小数として表され、(RANK - 1)/(–1) として計算されます。
ウィンドウが入力ローを移動するのに合わせて、ウィンドウの ORDER BY 句で指定された式でランクが計算されます。ORDER BY 句に複数の式が含まれる場合は、最初の式によって隣接ローで同じ値になるときに同順の発生を避けるために、2 番目以降の式が使用されます。NULL 値はその他の値よりも前にソートされます (昇順の場合)。
次の例は、ニューヨークの従業員の給与ランキングを性別ごとに示す結果セットを返します。結果セットは、小数のパーセンテージを使用して降順にランキングされ、性別ごとに分けられます。
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 は男性と女性で個別に評価されます。
次の例は、ユタ州とアリゾナ州の女性従業員のリストを返し、給与の多い順にランクしたものです。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 関数を使用して、データ・セット内の最上位または最下位の百分位数を検索できます。次の例では、クエリは給与額についてデータ・セット内で上位 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 関数 [ランキング]を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |