MAX
Beschreibung
MAX
ist eine Fensteraggregatfunktion, die Zeilen in Gruppen unterteilt, Zeilen nach einem Feld ordnet und den Maximalwert (höchsten Wert) in der Gruppe zurückgibt.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 sortiert werden.Workday teilt die Eingabezeilen entsprechend den Partitionierungsfeldern in Gruppen auf, ordnet die Zeilen entsprechend den Sortierfeldern an und berechnet dann den Aggregatausdruck (das Maximum für diese Funktion) in jeder Gruppe.
Syntax
whereMAX(input_field)OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]]RANGEBETWEENvaluePRECEDINGANDCURRENT ROW|ROWSwin_boundary|BETWEENwin_boundaryANDwin_boundary)win_boundarycan be:UNBOUNDED PRECEDINGvaluePRECEDINGUNBOUNDED FOLLOWINGvalueFOLLOWINGCURRENT ROW
Rückgabewert
Der Rückgabewert hat dieselbe Feldart wie der Eingabewert.
Eingabeparameter
- input_field
- Erforderliche Inhalte. Das Feld, für das die Aggregatfunktion ausgeführt werden soll. Sie können ein beliebiges numerisches Feld oder ein Währungsfeld verwenden.
- OVER()
- Erforderlich.OVERmuss innerhalb einer verwendet werdenMAXAusdruck.
- 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. Daher gruppiert Workday alle Datensätze, die denselben Wert für „Monat“ haben, in einer einzelnen 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 müssen jedoch eine numerische Feldart verwenden, z. B. Integer oder Numerisch, wenn Sie verwendenRANGE-Klausel.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.
- ZEILEN | RANGE
- Erforderliche Inhalte. DieROWSundRANGE-Klauseln definieren die bestimmte Anzahl von Zeilen (relativ zur aktuellen Zeile) innerhalb der Partition, indem sie einen Fensterrahmen angeben. Sie definieren den Fensterrahmen, indem Sie Start- und Endpunkte innerhalb der Partition angeben, die als Fenstergrenzen bezeichnet werden. Der Fensterrahmen ist der Satz von Eingabezeilen in jeder Partition, über den der Aggregatausdruck berechnet werden soll (Maximum für diese Funktion). Der Fensterrahmen kann eine, mehrere oder alle Zeilen der Partition enthalten.BeidesROWSundRANGEGeben Sie den Zeilenbereich relativ zur aktuellen Zeile an, aberRANGEarbeitet logisch auf Werten (logische Zuordnung) undROWSwird physisch für Zeilen im Dataset verwendet (Physische Zuordnung).RANGEbeschränkt den Fensterrahmen so, dass er Zeilen enthält, deren Werte innerhalb des angegebenen Bereichs relativ zum aktuellen Wert liegen.ROWSbeschränkt den Fensterrahmen auf Zeilen, die sich physisch neben der aktuellen Zeile befinden.VerwendenRANGEzur Definition absoluter Zeitfenstergrenzen, z. B. die letzten 3 Monate oder das Jahr bis heute. Bei VerwendungRANGE, dieORDER BY-Klausel muss eine numerische Feldart verwenden, z. B. Integer oder Numerisch.Beispiel: Angenommen, Sie haben ein Integer-Feld namens MonthNum, das die Zahl des Monats im Jahr darstellt (Werte 1 bis 12). Um alle Werte der letzten 3 Monate anzugeben, sortieren Sie nach MonthNum und verwendenRANGE BETWEEN 2 PRECEDING AND CURRENT ROW. Diese RANGE-Klausel enthält den aktuellen Monat und die vorherigen zwei Monate, was insgesamt 3 Monate ergibt.Wenn Sie ein Dataset veröffentlichen, das eine Fensterfunktion mit enthältRANGE, darf die Anzahl der Zeilen im Fenster nicht mehr als 1.000 betragen. Wenn ein bestimmtes Fenster 1.000 Zeilen überschreitet, schlägt der Veröffentlichungsjob fehl.
- gewinnen_boundary
- Erforderliche Inhalte. Die Fenstergrenzen definieren die Start- und Endpunkte des Fensterrahmens. Fenstergrenzen sind relativ zur aktuellen Zeile.APRECEDING-Klausel definiert eine Fenstergrenze, die niedriger ist als die aktuelle Zeile (die Anzahl der Zeilen, die vor der aktuellen Zeile eingeschlossen werden sollen). DieFOLLOWING-Klausel definiert eine Fenstergrenze, die größer ist als die aktuelle Zeile (die Anzahl der Zeilen, die nach der aktuellen Zeile eingeschlossen werden sollen).Wenn Sie nur eine Fenstergrenze angeben, verwendet Workday die aktuelle Zeile als die andere Grenze im Fensterrahmen (entweder die obere oder die untere Grenze, je nach Ausdruckssyntax). DieUNBOUNDEDDas Schlüsselwort "" schließt alle Zeilen in der angegebenen Richtung ein. Wenn Sie sowohl den Start als auch das Ende eines Fensterrahmens angeben müssen, verwenden Sie denBETWEENundANDSchlüsselwörterWenn Sie eine bestimmte Anzahl von Zeilen angeben, darf derWertnicht mehr als 100 betragen.Beispiel:ROWS 2 PRECEDINGbedeutet, dass das Fenster 3 Zeilen umfasst, beginnend mit 2 Zeilen vor und einschließlich der aktuellen Zeile.Beispiel:ROWS UNBOUNDED FOLLOWINGbedeutet, dass das Fenster mit der aktuellen Zeile beginnt und die aktuelle Zeile und alle Zeilen einschließt, die nach der aktuellen Zeile kommen.
Beispiele
Beispiel: Sie haben ein Dataset mit diesen Zeilen und Feldern.
Supervisory Org | Quartal | Name | Vergütungsänderung |
|---|---|---|---|
Marketing | 2019-Q1 | Goh | 2000.00 |
Marketing | 2019-Q1 | Freiman | 1000,00 |
Marketing | 2019-Q1 | Smith | 2500.00 |
Beratung | 2019-Q1 | Gomez | 5000.00 |
Beratung | 2019-Q1 | Kimura | 3000.00 |
Beratung | 2019-Q1 | Passz | 3500.00 |
Beratung | 2019-Q2 | Gomez | 0 |
Beratung | 2019-Q2 | Kimura | 2000.00 |
Beratung | 2019-Q2 | Passz | 1.500,00 |
Sie können die höchste Änderung der Vergütung (Feld
Vergütungsänderung
) für jede Linienorganisation in jedem Quartal berechnen.Um sicherzustellen, dass Workday für jede Zeile in einer Partition denselben Wert zurückgibt, ordnen Sie die Zeilen in absteigender Reihenfolge (
DESC
) nach demselben Feld wie dem Eingabefeld an, sodass die höchste Vergütungsänderung in jeder Partition zuerst erfolgt.Verwenden Sie folgenden Ausdruck im Feld
"Maximale Vergütungsänderung"
:MAX([Comp Change]) OVER( PARTITION BY [Supervisory Org], [Quarter] ORDER BY [Comp Change] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )
Sie erhalten folgende Ergebnisse:
Supervisory Org | Quartal | Name | Vergütungsänderung | Maximale Vergütungsänderung |
|---|---|---|---|---|
Beratung | 2019-Q1 | Gomez | 5000.00 | 5000.00 |
Beratung | 2019-Q1 | Passz | 3500.00 | 5000.00 |
Beratung | 2019-Q1 | Kimura | 3000.00 | 5000.00 |
Beratung | 2019-Q2 | Kimura | 2000.00 | 2000.00 |
Beratung | 2019-Q2 | Passz | 1.500,00 | 2000.00 |
Beratung | 2019-Q2 | Gomez | 0 | 2000.00 |
Marketing | 2019-Q1 | Smith | 2500.00 | 2500.00 |
Marketing | 2019-Q1 | Goh | 2000.00 | 2500.00 |
Marketing | 2019-Q1 | Freiman | 1000,00 | 2500.00 |