Herausforderung: Verwendung von Window-Funktionen
Betrachten wir die Tabelle bank_accounts
, die wir in den vorherigen Abschnitten verwendet haben:
Angenommen, wir möchten der Tabelle Informationen darüber hinzufügen, welcher Klasse jeder Benutzer basierend auf seinem Kontostand angehört.
Die Klassen werden wie folgt bestimmt:
Eine Person, deren Kontostand zu den unteren
25%
gehört, wird der vierten Klasse zugeordnet;Eine Person, deren Kontostand zwischen
25%
und50%
liegt, wird der dritten Klasse zugeordnet;Eine Person, deren Kontostand zwischen
50%
und75%
liegt, wird der zweiten Klasse zugeordnet;Eine Person, deren Kontostand zu den oberen
25%
gehört, wird der ersten Klasse zugeordnet.
Zur Lösung dieses Problems kann die Fensterfunktion NTILE()
verwendet werden.
Die Funktion NTILE()
ist eine Fensterfunktion, die die Zeilen in einer geordneten Partition in eine angegebene Anzahl von annähernd gleich großen Gruppen, sogenannte "Tiles", aufteilt.
Jede Zeile erhält eine Gruppennummer, beginnend mit 1
, basierend auf der Gruppe, in die sie fällt.
sql
Hinweis
Im Beispiel muss keine
PARTITION BY
-Klausel angegeben werden, da dieNTILE()
-Funktion auf das gesamte Ergebnis angewendet werden soll und nicht auf bestimmte Teilmengen oder Partitionen der Daten.
DieORDER BY
-Klausel ist ausreichend, da sie die Reihenfolge festlegt, in der die Zeilen auf die Tiles verteilt werden, und so sicherstellt, dass die Gruppierung auf der sortierten Reihenfolge der Gehälter über die gesamte Tabelle basiert.
Wenn Tiles innerhalb bestimmter Gruppen (z. B. Abteilungen) berechnet werden sollen, würdePARTITION BY
verwendet werden.
Swipe to start coding
Ihre Aufgabe ist es, die Funktion NTILE()
anzuwenden, um Informationen über die Klasse jedes Kontoinhabers zu erhalten.
Sie müssen:
- Die Anzahl der Klassen als Argument der Funktion angeben.
- Eine Sortierung nach dem Kontostand vornehmen, um die Klasse zu bestimmen.
- Da wir davon ausgehen, dass die erste Klasse die mit dem höchsten Kontostand ist und so weiter, müssen die Kontostände in absteigender Reihenfolge sortiert werden.
Lösung
Danke für Ihr Feedback!