Kursinhalt
Fortgeschrittene Techniken in SQL
Fortgeschrittene Techniken in SQL
Herausforderung: Verwendung der Window Function
Betrachten wir die Tabelle bank_accounts
, die wir in den vorherigen Abschnitten verwendet haben:
Nehmen wir an, wir möchten der Tabelle Informationen darüber hinzufügen, zu welcher Klasse jeder Benutzer gehört, basierend auf ihrem Kontostand.
Die Klassen werden wie folgt bestimmt:
- Eine Person, deren Kontostand in den unteren
25%
liegt, gehört zur vierten Klasse; - Eine Person, deren Kontostand zwischen
25%
und50%
liegt, gehört zur dritten Klasse; - Eine Person, deren Kontostand zwischen
50%
und75%
liegt, gehört zur zweiten Klasse; - Eine Person, deren Kontostand in den oberen
25%
liegt, gehört zur ersten Klasse.
Um dieses Problem zu lösen, können wir eine Fensterfunktion namens NTILE()
verwenden.
Die NTILE()
-Funktion ist eine Fensterfunktion, die die Zeilen in einer geordneten Partition in eine angegebene Anzahl von ungefähr gleich großen Gruppen oder "Kacheln" unterteilt.
Sie weist jeder Zeile eine Gruppennummer zu, beginnend bei 1
, basierend auf der Gruppe, in die sie fällt.
Hinweis
In diesem Beispiel müssen wir keine
PARTITION BY
-Klausel angeben, da wir dieNTILE()
-Funktion auf den gesamten Ergebnissatz anwenden möchten, nicht auf spezifische Untergruppen oder Partitionen der Daten.
DieORDER BY
-Klausel ist ausreichend, da sie die Reihenfolge definiert, in der die Zeilen in Kacheln verteilt werden, und sicherstellt, dass die Gruppierung auf der sortierten Reihenfolge der Gehälter über die gesamte Tabelle basiert.
Wenn wir Kacheln innerhalb spezifischer Gruppen (z.B. Abteilungen) berechnen wollten, würden wirPARTITION BY
verwenden.
Swipe to start coding
Ihre Aufgabe ist es, die NTILE()
-Funktion 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 Kontostand vornehmen, um die Klasse zu bestimmen.
- Da wir annehmen, dass die erste Klasse die Klasse mit dem höchsten Kontostand ist und so weiter, müssen wir die Kontostände in absteigender Reihenfolge sortieren.
Lösung
Danke für Ihr Feedback!
Herausforderung: Verwendung der Window Function
Betrachten wir die Tabelle bank_accounts
, die wir in den vorherigen Abschnitten verwendet haben:
Nehmen wir an, wir möchten der Tabelle Informationen darüber hinzufügen, zu welcher Klasse jeder Benutzer gehört, basierend auf ihrem Kontostand.
Die Klassen werden wie folgt bestimmt:
- Eine Person, deren Kontostand in den unteren
25%
liegt, gehört zur vierten Klasse; - Eine Person, deren Kontostand zwischen
25%
und50%
liegt, gehört zur dritten Klasse; - Eine Person, deren Kontostand zwischen
50%
und75%
liegt, gehört zur zweiten Klasse; - Eine Person, deren Kontostand in den oberen
25%
liegt, gehört zur ersten Klasse.
Um dieses Problem zu lösen, können wir eine Fensterfunktion namens NTILE()
verwenden.
Die NTILE()
-Funktion ist eine Fensterfunktion, die die Zeilen in einer geordneten Partition in eine angegebene Anzahl von ungefähr gleich großen Gruppen oder "Kacheln" unterteilt.
Sie weist jeder Zeile eine Gruppennummer zu, beginnend bei 1
, basierend auf der Gruppe, in die sie fällt.
Hinweis
In diesem Beispiel müssen wir keine
PARTITION BY
-Klausel angeben, da wir dieNTILE()
-Funktion auf den gesamten Ergebnissatz anwenden möchten, nicht auf spezifische Untergruppen oder Partitionen der Daten.
DieORDER BY
-Klausel ist ausreichend, da sie die Reihenfolge definiert, in der die Zeilen in Kacheln verteilt werden, und sicherstellt, dass die Gruppierung auf der sortierten Reihenfolge der Gehälter über die gesamte Tabelle basiert.
Wenn wir Kacheln innerhalb spezifischer Gruppen (z.B. Abteilungen) berechnen wollten, würden wirPARTITION BY
verwenden.
Swipe to start coding
Ihre Aufgabe ist es, die NTILE()
-Funktion 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 Kontostand vornehmen, um die Klasse zu bestimmen.
- Da wir annehmen, dass die erste Klasse die Klasse mit dem höchsten Kontostand ist und so weiter, müssen wir die Kontostände in absteigender Reihenfolge sortieren.
Lösung
Danke für Ihr Feedback!