- Kategorien:
Fensterfunktionen (Rangbezogen, Fensterrahmen)
PERCENT_RANK¶
Gibt den relativen Rang eines Wertes innerhalb einer Gruppe von Werten zurück. Die Angabe erfolgt als prozentualer Anteil im Wertebereich von 0,0 bis 1,0.
Syntax¶
PERCENT_RANK() OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] [ <cumulativeRangeFrame> ] )
Wobei:
cumulativeRangeFrame ::= { RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW | RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING }
Nutzungshinweise¶
expr1
gibt die Spalte (oder den Ausdruck) an, nach der/dem die Partitionierung erfolgen soll.Angenommen, Sie möchten Landwirte der einzelnen Bundesstaaten oder Provinzen anhand der von ihnen produzierten Maismenge ordnen. In diesem Fall nehmen Sie eine Partitionierung anhand des Bundesstaats vor.
Wenn Sie lediglich eine einzige Gruppe benötigen (z. B. Anordnen aller Landwirte in den USA unabhängig davon, in welchem Bundesstaat sie leben), lassen Sie die
PARTITION BY
-Klausel weg.expr2
gibt die Spalte an, anhand der Sie die Rangfolge bestimmen möchten.Wenn Sie beispielsweise Landwirte sortieren möchten, um zu sehen, wer den meisten Mais produziert hat (im jeweiligen Bundesstaat), verwenden Sie die Spalte
bushels_produced
. Weitere Details dazu finden Sie unter Beispiele (unter diesem Thema).PERCENT_RANK berechnet sich wie folgt:
Wenn n gleich 1 ist:
PERCENT_RANK = 0
Wenn n größer als 1 ist:
PERCENT_RANK = (r - 1) / (n - 1)
Wobei
r
der RANK der Zeile ist undn
die Anzahl der Zeilen in der Fensterpartition.Der Wertebereich reichen von 0,0 bis 1,0. Sie können mit 100 multiplizieren, um einen wahren Prozentsatz zu erhalten.
PERCENT_RANK unterstützt bereichsbasierte kumulative Fensterrahmen, jedoch keine anderen Typen von Fensterrahmen. Weitere Informationen zur Syntax für bereichsbasierte, kumulative Fensterrahmen finden Sie unter Syntax und Nutzung von Fensterrahmen.
Beispiele¶
SELECT
exchange,
symbol,
PERCENT_RANK() OVER (PARTITION BY exchange ORDER BY price) AS percent_rank
FROM trades;
+--------+------+------------+
|exchange|symbol|PERCENT_RANK|
+--------+------+------------+
|C |SPY | 0.0|
|C |AAPL | 0.5|
|C |AAPL | 1.0|
|N |YHOO | 0.0|
|N |QQQ | 0.2|
|N |QQQ | 0.4|
|N |SPY | 0.6|
|N |SPY | 0.6|
|N |AAPL | 1.0|
|Q |YHOO | 0.0|
|Q |YHOO | 0.2|
|Q |MSFT | 0.4|
|Q |MSFT | 0.6|
|Q |QQQ | 0.8|
|Q |QQQ | 1.0|
|P |YHOO | 0.0|
|P |MSFT | 0.25|
|P |MSFT | 0.5|
|P |SPY | 0.75|
|P |AAPL | 1.0|
+--------+------+------------+