Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Arten von Window-Funktionen | Einige Zusätzliche Themen
Quizzes & Challenges
Quizzes
Challenges
/
SQL-Optimierung und Abfragefunktionen

bookArten von Window-Funktionen

Lassen Sie uns kurz die wichtigsten Typen von Window-Funktionen betrachten, die in SQL verwendet werden.

Aggregatfunktionen

Dies sind die Standard-Aggregatfunktionen (AVG, SUM, MAX, MIN, COUNT), die im Kontext eines Fensters verwendet werden. Wir haben diesen Typ von Window-Funktion bereits im vorherigen Kapitel verwendet.

Ranking-Funktionen

Ranking-Funktionen in SQL sind eine Art von Window-Funktion, mit der Sie jeder Zeile innerhalb einer Partition eines Ergebnismenge einen Rang zuweisen können. Diese Funktionen sind äußerst nützlich für geordnete Berechnungen und Analysen.

  • RANK(): weist jeder unterschiedlichen Zeile innerhalb der Partition basierend auf der ORDER BY-Klausel einen eindeutigen Rang zu. Zeilen mit gleichen Werten erhalten denselben Rang, wobei Lücken in der Rangfolge entstehen;

  • DENSE_RANK(): ähnlich wie RANK(), jedoch ohne Lücken in der Rangfolge;

  • NTILE(n): teilt die Zeilen in einer geordneten Partition in n Gruppen auf und weist jeder Zeile eine Gruppennummer zu.

Beispiel

Wir werden die Verkäufe basierend auf dem Amount für jede ProductID in aufsteigender Reihenfolge mit der Funktion DENSE_RANK() bewerten:

12345678
SELECT sales_id, product_id, sales_date, amount, DENSE_RANK() OVER (PARTITION BY product_id ORDER BY amount DESC) AS dense_rank_amount FROM Sales;
copy

Die Ergebnistabelle enthält alle Informationen aus der Haupttabelle sowie eine zusätzliche Spalte, die den Rang jedes Verkaufs für das jeweilige Produkt angibt.

Wertvergleichsfunktionen

Wertvergleichs-Window-Funktionen in SQL werden verwendet, um Werte in der aktuellen Zeile mit Werten in anderen Zeilen innerhalb derselben Partition zu vergleichen.
Diese Funktionen sind besonders nützlich für Aufgaben, die die Analyse von Trends, Berechnungen auf Basis benachbarter Zeilen oder den Zugriff auf bestimmte Zeilenwerte innerhalb eines definierten Fensters erfordern. Es gibt mehrere Wertvergleichsfunktionen in SQL:

  • LAG(): ruft den Wert aus einer vorherigen Zeile im Ergebnismenge ab, ohne dass ein Self-Join erforderlich ist;
  • LEAD(): ruft den Wert aus einer nachfolgenden Zeile im Ergebnismenge ab, ohne dass ein Self-Join erforderlich ist;
  • FIRST_VALUE(): gibt den Wert der ersten Zeile im Fensterrahmen zurück;
  • LAST_VALUE(): gibt den Wert der letzten Zeile im Fensterrahmen zurück.

Beispiel

Wir verwenden die Wertvergleichs-Window-Funktion LAG(), um die Änderung des Verkaufsbetrags gegenüber dem vorherigen Verkauf für jedes Produkt zu berechnen:

1234567891011
SELECT sales_id, product_id, sales_date, amount, LAG(amount, 1) OVER (PARTITION BY product_id ORDER BY sales_date) AS previous_amount, amount - LAG(amount, 1) OVER (PARTITION BY product_id ORDER BY sales_date) AS amount_change FROM Sales ORDER BY product_id, sales_date;
copy

Dadurch können Informationen über Verkaufsdifferenzen für jedes einzelne Produkt einfach extrahiert werden, ohne Unterabfragen oder gespeicherte Prozeduren zu verwenden.
Differenzen für alle Verkäufe ohne Partitionierung können ebenfalls mit der folgenden Abfrage berechnet werden:

123456789
SELECT sales_id, product_id, sales_date, amount, LAG(amount, 1) OVER (ORDER BY sales_date) AS previous_amount, amount - LAG(amount, 1) OVER (ORDER BY sales_date) AS amount_change FROM Sales;
copy

Sie sehen, dass wir die Klausel PARTITION BY im OVER-Block nicht eingeschlossen haben. Das bedeutet, dass wir nicht nur die vorherigen Werte für ein bestimmtes Produkt erhalten möchten, sondern für alle Verkäufe in der Tabelle.

question mark

Was macht die Funktion NTILE() in SQL?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 3

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:

Can you explain the difference between RANK() and DENSE_RANK() in more detail?

What are some practical use cases for value comparison window functions like LAG() and LEAD()?

Could you provide more examples of window functions in SQL?

bookArten von Window-Funktionen

Swipe um das Menü anzuzeigen

Lassen Sie uns kurz die wichtigsten Typen von Window-Funktionen betrachten, die in SQL verwendet werden.

Aggregatfunktionen

Dies sind die Standard-Aggregatfunktionen (AVG, SUM, MAX, MIN, COUNT), die im Kontext eines Fensters verwendet werden. Wir haben diesen Typ von Window-Funktion bereits im vorherigen Kapitel verwendet.

Ranking-Funktionen

Ranking-Funktionen in SQL sind eine Art von Window-Funktion, mit der Sie jeder Zeile innerhalb einer Partition eines Ergebnismenge einen Rang zuweisen können. Diese Funktionen sind äußerst nützlich für geordnete Berechnungen und Analysen.

  • RANK(): weist jeder unterschiedlichen Zeile innerhalb der Partition basierend auf der ORDER BY-Klausel einen eindeutigen Rang zu. Zeilen mit gleichen Werten erhalten denselben Rang, wobei Lücken in der Rangfolge entstehen;

  • DENSE_RANK(): ähnlich wie RANK(), jedoch ohne Lücken in der Rangfolge;

  • NTILE(n): teilt die Zeilen in einer geordneten Partition in n Gruppen auf und weist jeder Zeile eine Gruppennummer zu.

Beispiel

Wir werden die Verkäufe basierend auf dem Amount für jede ProductID in aufsteigender Reihenfolge mit der Funktion DENSE_RANK() bewerten:

12345678
SELECT sales_id, product_id, sales_date, amount, DENSE_RANK() OVER (PARTITION BY product_id ORDER BY amount DESC) AS dense_rank_amount FROM Sales;
copy

Die Ergebnistabelle enthält alle Informationen aus der Haupttabelle sowie eine zusätzliche Spalte, die den Rang jedes Verkaufs für das jeweilige Produkt angibt.

Wertvergleichsfunktionen

Wertvergleichs-Window-Funktionen in SQL werden verwendet, um Werte in der aktuellen Zeile mit Werten in anderen Zeilen innerhalb derselben Partition zu vergleichen.
Diese Funktionen sind besonders nützlich für Aufgaben, die die Analyse von Trends, Berechnungen auf Basis benachbarter Zeilen oder den Zugriff auf bestimmte Zeilenwerte innerhalb eines definierten Fensters erfordern. Es gibt mehrere Wertvergleichsfunktionen in SQL:

  • LAG(): ruft den Wert aus einer vorherigen Zeile im Ergebnismenge ab, ohne dass ein Self-Join erforderlich ist;
  • LEAD(): ruft den Wert aus einer nachfolgenden Zeile im Ergebnismenge ab, ohne dass ein Self-Join erforderlich ist;
  • FIRST_VALUE(): gibt den Wert der ersten Zeile im Fensterrahmen zurück;
  • LAST_VALUE(): gibt den Wert der letzten Zeile im Fensterrahmen zurück.

Beispiel

Wir verwenden die Wertvergleichs-Window-Funktion LAG(), um die Änderung des Verkaufsbetrags gegenüber dem vorherigen Verkauf für jedes Produkt zu berechnen:

1234567891011
SELECT sales_id, product_id, sales_date, amount, LAG(amount, 1) OVER (PARTITION BY product_id ORDER BY sales_date) AS previous_amount, amount - LAG(amount, 1) OVER (PARTITION BY product_id ORDER BY sales_date) AS amount_change FROM Sales ORDER BY product_id, sales_date;
copy

Dadurch können Informationen über Verkaufsdifferenzen für jedes einzelne Produkt einfach extrahiert werden, ohne Unterabfragen oder gespeicherte Prozeduren zu verwenden.
Differenzen für alle Verkäufe ohne Partitionierung können ebenfalls mit der folgenden Abfrage berechnet werden:

123456789
SELECT sales_id, product_id, sales_date, amount, LAG(amount, 1) OVER (ORDER BY sales_date) AS previous_amount, amount - LAG(amount, 1) OVER (ORDER BY sales_date) AS amount_change FROM Sales;
copy

Sie sehen, dass wir die Klausel PARTITION BY im OVER-Block nicht eingeschlossen haben. Das bedeutet, dass wir nicht nur die vorherigen Werte für ein bestimmtes Produkt erhalten möchten, sondern für alle Verkäufe in der Tabelle.

question mark

Was macht die Funktion NTILE() in SQL?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 3
some-alt