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.
Um dieses Problem zu lösen, können wir eine Fensterfunktion namens NTILE()
verwenden.
Die Funktion NTILE()
ist eine Fensterfunktion, die die Zeilen in einer geordneten Partition in eine angegebene Anzahl von annähernd gleich großen Gruppen oder "Tiles" aufteilt.
Jede Zeile erhält eine Gruppennummer, beginnend bei 1
, basierend auf der Gruppe, in die sie fällt.
NTILE(num_buckets) OVER (
ORDER BY sort_column
)
Hinweis
Im Beispiel müssen wir keine
PARTITION BY
-Klausel angeben, da wir die FunktionNTILE()
auf das gesamte Ergebnis anwenden möchten 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 in der gesamten Tabelle basiert.
Wenn wir Tiles innerhalb bestimmter Gruppen (z. B. Abteilungen) berechnen wollten, würden wirPARTITION BY
verwenden.
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 annehmen, 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!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
How do I write a query to assign classes using NTILE() for this table?
Can you explain how NTILE() works with an example using these balances?
What would the result look like after adding the class column?
Awesome!
Completion rate improved to 4.35
Herausforderung: Verwendung von Window-Funktionen
Swipe um das Menü anzuzeigen
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.
Um dieses Problem zu lösen, können wir eine Fensterfunktion namens NTILE()
verwenden.
Die Funktion NTILE()
ist eine Fensterfunktion, die die Zeilen in einer geordneten Partition in eine angegebene Anzahl von annähernd gleich großen Gruppen oder "Tiles" aufteilt.
Jede Zeile erhält eine Gruppennummer, beginnend bei 1
, basierend auf der Gruppe, in die sie fällt.
NTILE(num_buckets) OVER (
ORDER BY sort_column
)
Hinweis
Im Beispiel müssen wir keine
PARTITION BY
-Klausel angeben, da wir die FunktionNTILE()
auf das gesamte Ergebnis anwenden möchten 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 in der gesamten Tabelle basiert.
Wenn wir Tiles innerhalb bestimmter Gruppen (z. B. Abteilungen) berechnen wollten, würden wirPARTITION BY
verwenden.
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 annehmen, 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!
Awesome!
Completion rate improved to 4.35single