Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Verwendung von Window-Funktionen | Einige Zusätzliche Themen
Fortgeschrittene Techniken in SQL

bookHerausforderung: 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% und 50% liegt, wird der dritten Klasse zugeordnet;
  • Eine Person, deren Kontostand zwischen 50% und 75% 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 Funktion NTILE() auf das gesamte Ergebnis anwenden möchten und nicht auf bestimmte Teilmengen oder Partitionen der Daten.
Die ORDER 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 wir PARTITION BY verwenden.

Aufgabe

Swipe to start coding

Ihre Aufgabe ist es, die Funktion NTILE() anzuwenden, um Informationen über die Klasse jedes Kontoinhabers zu erhalten.

Sie müssen:

  1. Die Anzahl der Klassen als Argument der Funktion angeben.
  2. Eine Sortierung nach dem Kontostand vornehmen, um die Klasse zu bestimmen.
  3. 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

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 5
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 4.35

bookHerausforderung: 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% und 50% liegt, wird der dritten Klasse zugeordnet;
  • Eine Person, deren Kontostand zwischen 50% und 75% 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 Funktion NTILE() auf das gesamte Ergebnis anwenden möchten und nicht auf bestimmte Teilmengen oder Partitionen der Daten.
Die ORDER 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 wir PARTITION BY verwenden.

Aufgabe

Swipe to start coding

Ihre Aufgabe ist es, die Funktion NTILE() anzuwenden, um Informationen über die Klasse jedes Kontoinhabers zu erhalten.

Sie müssen:

  1. Die Anzahl der Klassen als Argument der Funktion angeben.
  2. Eine Sortierung nach dem Kontostand vornehmen, um die Klasse zu bestimmen.
  3. 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

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

close

Awesome!

Completion rate improved to 4.35
Abschnitt 3. Kapitel 5
single

single

some-alt