RANK
Beschreibung
RANK
ist eine Fensteraggregatfunktion, mit der jeder Zeile in einer Gruppe eine Rangfolgenummer zugewiesen wird. Wenn mehrere Zeilen denselben Rangfolgewert haben (es gibt Gleichstand), weist Workday den unentschiedenen Zeilen denselben Rangwert zu und überspringt die nachfolgende Rangposition.Die
PARTITION BY
Die -Klausel bestimmt, welche Felder verwendet werden sollen, um einen Satz von Eingabezeilen in Gruppen zu unterteilen.Die
ORDER BY
Die -Klausel bestimmt, wie die Zeilen in der Partition angeordnet werden, bevor sie eingestuft werden. Workday teilt die Eingabezeilen entsprechend den Partitionierungsfeldern in Gruppen auf, ordnet die Zeilen entsprechend den Sortierfeldern an und berechnet dann den Aggregatausdruck (Rang für diese Funktion) in jeder Gruppe. Die Rangfolgezeilen in jeder Gruppe beginnen bei 1.
Syntax
RANK()OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]] )
Rückgabewert
Gibt einen Wert des Typs "" zurück
Integer
.Eingabeparameter
- OVER()
- Erforderlich.OVERmuss innerhalb einer verwendet werdenRANKAusdruck.
- PARTITION BYpartitioning_field
- Erforderliche Inhalte. Verwenden Sie diePARTITION BY-Klausel, um ein oder mehrere Felder anzugeben, die zur Partitionierung einer Gruppe von Eingabezeilen verwendet werden sollen. Sie können eine beliebige Feldart außer Währung angeben. Beispiel: Sie geben das Feld „Monat“ als Partitionsfeld an. Workday gruppiert dann alle Datensätze, die denselben Wert für „Monat“ haben, in einer einzigen Partition.
- ORDER BYordering_field
- Erforderliche Inhalte. Verwenden Sie dieORDER BY-Klausel, um anzugeben, wie die Eingabezeilen in der Partition sortiert werden sollen, indem die Werte im angegebenen Feld in jeder Partition verwendet werden. Sie können eine beliebige Feldart außer Währung angeben.Sie können die verwendenDESCoderASCSchlüsselwörter, die in absteigender Reihenfolge (Werte hoch nach unten, NULL-Werte kommen zuletzt) oder aufsteigend (von niedrigem bis hohem Wert, NULL-Werte zuerst) für jedes Reihenfolgefeld sortiert werden sollen. Wenn Sie keine Sortierreihenfolge für ein Reihenfolgefeld angeben, sortiert Workday die Zeilen automatisch in aufsteigender Reihenfolge.
Beispiele
Beispiel: Sie haben ein Dataset mit diesen Zeilen und Feldern.
Mitarbeiter | Verkaufsdatum | Sales |
|---|---|---|
Goh | 12/31/2018 | 140 |
Goh | 11/30/2018 | 60 |
Goh | 10/31/2018 | 140 |
Freiman | 12/31/2018 | 160 |
Freiman | 11/30/2018 | 60 |
Freiman | 10/31/2018 | 110 |
Smith | 12/31/2018 | 140 |
Smith | 11/30/2018 | 60 |
Smith | 10/31/2018 | 120 |
Sie können die Verkäufe für jeden Mitarbeiter in absteigender Reihenfolge ordnen, sodass die höchsten Verkäufe die Rangfolge 1 erhalten. Verwenden Sie folgenden Ausdruck im Feld
Rangfolge der Verkäufe nach Mitarbeiter
:RANK() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
Sie erhalten folgende Ergebnisse:
Mitarbeiter | Verkaufsdatum | Sales | Verkäufe nach Mitarbeiter sortieren |
|---|---|---|---|
Goh | 12/31/2018 | 140 | 1 |
Goh | 10/31/2018 | 140 | 1 |
Goh | 11/30/2018 | 60 | 3 |
Freiman | 12/31/2018 | 160 | 1 |
Freiman | 10/31/2018 | 110 | 2 |
Freiman | 11/30/2018 | 60 | 3 |
Smith | 12/31/2018 | 140 | 1 |
Smith | 10/31/2018 | 120 | 2 |
Smith | 11/30/2018 | 60 | 3 |
Sie können die Verkäufe für jedes Datum auch in absteigender Reihenfolge ordnen, sodass die höchsten Verkäufe die Rangfolge 1 erhalten. Verwenden Sie folgenden Ausdruck im Feld
Verkäuferangfolge nach Datum
:RANK() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
Sie erhalten folgende Ergebnisse:
Mitarbeiter | Verkaufsdatum | Sales | Verkäufe nach Datum sortieren |
|---|---|---|---|
Freiman | 12/31/2018 | 160 | 1 |
Goh | 12/31/2018 | 140 | 2 |
Smith | 12/31/2018 | 140 | 2 |
Goh | 11/30/2018 | 60 | 1 |
Freiman | 11/30/2018 | 60 | 1 |
Smith | 11/30/2018 | 60 | 1 |
Goh | 10/31/2018 | 140 | 1 |
Smith | 10/31/2018 | 120 | 2 |
Freiman | 10/31/2018 | 110 | 3 |
Beachten Sie, dass unentschiedene Werte dieselbe Rangnummer erhalten und die folgende Rangposition übersprungen wird.