Zurück zur Artikelliste Artikel
15 Leseminuten

Handbuch der SQL-Fensterfunktionen

Jeder Datenanalyst kann von der Kenntnis der SQL-Fensterfunktionen profitieren. Sie verbessern Ihre Datenanalyse und öffnen Ihnen die Türen zu einer Datenanalyse auf einer völlig neuen Ebene. Dieser Artikel ist Ihr Ausgangspunkt für die Welt der SQL-Fensterfunktionen.

SQL-Fensterfunktionen ermöglichen es Ihnen, alle Datenzeilen und ihre Aggregatwerte gleichzeitig anzuzeigen. Klingt ein bisschen wie GROUP BY auf Steroiden, nicht wahr? Das ist aber noch nicht alles. Da Fensterfunktionen verschiedene Berechnungen über den Zeilensatz durchführen, ermöglichen sie auch die Aufteilung von Datensätzen in Teilmengen. Sie helfen Ihnen, Daten einfach zu ordnen, zu aggregieren, Unterschiede zwischen verschiedenen Zeiträumen zu berechnen (z. B. Gewinnsteigerung/-verringerung zwischen zwei Monaten/Quartalen/Jahren) und kumulative Summen, laufende Summen, gleitende Durchschnitte usw. zu ermitteln.

Fensterfunktionen sind ein komplexes Thema, aber mit unserem Kurs ist es viel einfacher, sie zu lernen. Fensterfunktionen Kurs. Es handelt sich um einen interaktiven Kurs mit 218 Übungen, die ein systematisches Lernen mit viel Programmieren ermöglichen. Sie lernen alles über die wichtigsten Fensterfunktionsklauseln - z. B. OVER(), ORDER BY und PARTITION BY - und was ein Fensterrahmen ist. Dann lernen Sie, wie Sie all das im Zusammenhang mit verschiedenen Fensterfunktionen verwenden können.

Nach dem Lernen ist es Zeit für die Praxis (die auch Lernen ist). Unser Fensterfunktionen Practice Set bietet Ihnen 100 zusätzliche interaktive Übungen, damit Sie Ihr Wissen auch wirklich in die Praxis umsetzen können.

Die Syntax von SQL Fensterfunktionen

Fensterfunktionen haben ihren Namen von einem Fensterrahmen, der eine Reihe von Zeilen enthält, die mit der aktuellen Zeile in Beziehung stehen.

Um eine Fensterfunktion auf dem Fensterrahmen auszuführen, müssen Sie die allgemeine Syntax für Fensterfunktionen kennen:

SELECT column_1,
       column_2,
	<window_function> OVER(PARTITION BY … ORDER BY … <window_frame>) AS column_alias
FROM table;

Es gibt mehrere wesentliche Teile dieser Syntax, die erklärt werden müssen:

  • OVER-Klausel: Dies ist die obligatorische Klausel, die zur Definition eines Fensterrahmens erforderlich ist. Sie kennen zum Beispiel die Fensterfunktion SUM(order_value) OVER() as a SUM(). Ohne OVER() ist dies nur eine normale SUMME() Aggregatfunktion.
  • PARTITION BY: Dies ist eine optionale Klausel zur Partitionierung des Datensatzes, d. h. zur Aufteilung in Teilmengen. Damit können Sie eine Fensterfunktion auf jede Partition separat anwenden. Wird diese Klausel weggelassen, so ist die gesamte Ergebnismenge eine Partition.
  • ORDER BY: Diese optionale Klausel (für einige Fensterfunktionen) wird verwendet, um die Reihenfolge der Zeilen in einem Fensterrahmen festzulegen. Wenn Sie diese Klausel weglassen, ist die Reihenfolge der Zeilen im Fensterrahmen willkürlich.
  • <window_frame>: Damit werden die oberen und unteren Grenzen eines Fensterrahmens festgelegt. Zwei wichtige Klauseln, die dafür verwendet werden, sind ROWS und RANGE. ROWS definiert die Anzahl der Zeilen, die vor und nach der aktuellen Zeile liegen. Die Klausel RANGE definiert den Bereich der Zeilen auf der Grundlage ihres Wertes im Vergleich zur aktuellen Zeile. Weitere Informationen finden Sie in unserem Artikel über die Unterschiede zwischen ROWS und RANGE. Dieser Teil der Syntax wird in der Regel weggelassen, da der Standardfensterrahmen das ist, was die Benutzer am häufigsten benötigen.

Der Standard-Fensterrahmen hängt in diesem Fall davon ab, ob Sie die ORDER BY -Klausel in OVER() verwenden. Wenn Sie dies tun, ist der Rahmen die aktuelle Zeile und alle Zeilen vor ihr in der aktuellen Partition. Wenn Sie ORDER BY nicht angeben, ist der Fensterrahmen die aktuelle Zeile und alle davor und danach liegenden Zeilen in der aktuellen Partition. Im zweiten Fall ist der Fensterrahmen im Grunde der gesamte Datensatz - oder die gesamte Partition, wenn Sie auch PARTITION BY verwenden.

Allgemeine SQL Fensterfunktionen

Es gibt viele verschiedene Fensterfunktionen. Hier finden Sie einen Überblick über einige der gebräuchlichsten:

Window Function Category Window Function Description Further Reading

Ranking Functions

ROW_NUMBER()

• Returns a unique row number for each row within a window frame.

• Tied row values get different row numbers.

How to Number Rows in an SQL Result Set

How to Use ROW_NUMBER OVER() in SQL to Rank Data

RANK()

• Ranks the rows within a window frame.

• Tied row values get the same rank, with a gap in the ranking.

What Is the RANK() Function in SQL, and How Do You Use It?

How to Rank Rows in SQL: A Complete Guide

How to Use the SQL RANK OVER (PARTITION BY)

DENSE_RANK()

• Ranks the rows within a window frame

• Tied row values get the same rank, with no gap in the ranking.

Overview of Ranking Functions in SQL

What’s the Difference Between RANK and DENSE_RANK in SQL?

Aggregate Functions

SUM()

• Calculates the sum of values within the window frame.

How to Use SUM() with OVER(PARTITION BY) in SQL

AVG()

• Calculates the average values within the window frame.

 

COUNT()

• Counts the values of rows within the window frame.

COUNT OVER PARTITION BY: An Explanation with 3 Examples

MIN()

• Finds the minimum value within the window frame.

 

MAX()

• Finds the maximum value within the window frame.

 

Analytic Functions

NTILE()

• Divides the window frame into n groups. If possible, each group will have the same number of rows.

• Each row is assigned its group number.

6 Examples of NTILE() Function in SQL | LearnSQL.de

 

LEAD()

• Gets the data from a row that is a defined number of rows after the current one.

The LAG Function and the LEAD Function in SQL

LAG()

• Gets the data from a row that is a defined number of rows before the current one.

The LAG Function and the LEAD Function in SQL

FIRST_VALUE()

• Gets the value of the first row within the window frame.

 

LAST_VALUE()

• Gets the value of the last row within the window frame.

 

SQL Fensterfunktionen Beispiele

Nachdem wir nun die Grundlagen durchgegangen sind, ist es an der Zeit, einige praktische Beispiele für Fensterfunktionen zu zeigen.

In allen Beispielen verwende ich die gleiche Tabelle. Sie trägt den Titel exchange_rates und enthält die Wechselkurse der Europäischen Zentralbank (EZB) für April 2024 für drei Währungspaare: EUR vs. USD, EUR vs. CHF und EUR vs. JPY.

Hier sehen Sie einen Ausschnitt der Daten.

iddatecurrency_pairecb_rate
12024-04-02EUR_USD1.0749
22024-04-02EUR_JPY163.01
32024-04-02EUR_CHF0.9765
42024-04-03EUR_USD1.0783
52024-04-03EUR_JPY163.66
62024-04-03EUR_CHF0.9792
72024-04-04EUR_USD1.0852
82024-04-04EUR_JPY164.69
92024-04-04EUR_CHF0.9846

Beispiel für eine Ranking-Fensterfunktion

Dieses Beispiel zeigt Ihnen, wie DENSE_RANK() funktioniert. Die beiden anderen Ranking-Fensterfunktionen können auf die gleiche Weise verwendet werden; sie könnten (je nach Daten) leicht unterschiedliche Ergebnisse liefern.

Der folgende Code ordnet die Daten in der Tabelle vom höchsten zum niedrigsten Wechselkurs:

SELECT date,
	 currency_pair,
	 ecb_rate, 
	 DENSE_RANK() OVER (ORDER BY ecb_rate DESC) AS rank_ecb_rate
FROM exchange_rates;

Ich wähle das Datum, das Währungspaar und den Kurs. Jetzt habe ich DENSE_RANK() gewählt, um die Daten zu ordnen. Das ist nur für den Fall, dass es die gleichen Wechselkurse gibt (höchst unwahrscheinlich, aber trotzdem...); ich möchte, dass sie gleich eingestuft werden, und ich möchte keine Lücken in der Einstufung haben.

Auf die Funktion DENSE_RANK() folgt die Klausel OVER(), die die Fensterfunktion definiert. In den Klammern der Klausel verwende ich eine weitere Klausel für die Fensterfunktion -ORDER BY. Auf diese Weise weise ich die Fensterfunktion DENSE_RANK() an, die Daten nach dem EZB-Satz in absteigender Reihenfolge zu ordnen.

Dies ist die Ausgabe, die ich erhalte:

datecurrency_pairecb_raterank_ecb_rate
2024-04-09EUR_JPY164.97001
2024-04-10EUR_JPY164.89002
2024-04-04EUR_JPY164.69003
...
2024-04-02EUR_JPY163.01009
2024-04-09EUR_USD1.086710
2024-04-10EUR_USD1.086011
2024-04-04EUR_USD1.085212
2024-04-12EUR_USD1.065218
2024-04-04EUR_CHF0.984619
2024-04-09EUR_CHF0.981920
2024-04-10EUR_CHF0.981021
2024-04-12EUR_CHF0.971627

Wie Sie sehen können, wurde jede Zeile nach dem Wert des Zinssatzes geordnet. Bei gleichen Kursen würde DENSE_RANK() denselben Rang zuweisen und den Rang nicht überspringen. RANK() würde dasselbe tun, nur würde es die Rangfolge überspringen. ROW_NUMBER() würde einen fortlaufenden Rang zuweisen, auch wenn einige Zeilen denselben Wechselkurs haben.

Weitere Lektüre:

Beispiel für die Aggregate Window Funktion

Hier ist ein schönes Beispiel dafür, wie Sie die Funktion AVG() window verwenden können, um den Durchschnittskurs für jedes Währungspaar zu berechnen:

SELECT date,
	 currency_pair,
	 ecb_rate,
	 AVG(ecb_rate) OVER (PARTITION BY currency_pair) AS avg_rate_by_currency
FROM exchange_rates
ORDER BY currency_pair, date;

Wie bei der regulären Aggregatfunktion AVG() müssen Sie die Spalte angeben, über die Sie den Durchschnitt ermitteln möchten. Um die Funktion in eine Fensterfunktion umzuwandeln, verwenden Sie die Klausel OVER(). In diesem Fall verwende ich PARTITION BY in der Spalte currency_pair. Auf diese Weise unterteile ich die Daten in Teilmengen je nach Währungspaar.

Einfach ausgedrückt, ich berechne den Durchschnittskurs für jedes Währungspaar separat.

Werfen Sie einen Blick auf die Codeausgabe. Sie wurde nach Währungspaaren und Datum sortiert:

datecurrency_pairecb_rateavg_rate_by_currency
2024-04-02EUR_CHF0.97650.9793
2024-04-03EUR_CHF0.97920.9793
2024-04-04EUR_CHF0.98460.9793
2024-04-02EUR_JPY163.0100164.1211
2024-04-03EUR_JPY163.6600164.1211
2024-04-04EUR_JPY164.6900164.1211
2024-04-02EUR_USD1.07491.0795
2024-04-03EUR_USD1.07831.0795
2024-04-0EUR_USD1.08521.0795

Der Durchschnittskurs EUR vs. CHF beträgt 0,9793, und dieser Wert wird für jede Zeile EUR vs. CHF wiederholt. Wenn die Fensterfunktion das nächste Währungspaar erreicht, wird der Durchschnitt zurückgesetzt und neu berechnet; für EUR vs. JPY beträgt er 164,1211. Der Durchschnitt für EUR gegen USD beträgt schließlich 1,0795.

Mit dieser Fensterfunktion konnte ich die Durchschnitte separat berechnen und die Durchschnittswerte anzeigen, ohne einzelne Zeilen zusammenzufassen. Mit anderen Worten, ich kann jeden Tageskurs zusammen mit dem Durchschnitt für dieses Währungspaar sehen.

Weitere Lektüre:

Beispiele für analytische Fensterfunktionen

In diesem Abschnitt zeige ich drei Beispiele für verschiedene analytische SQL-Fensterfunktionen.

LAG()

Das Beispiel LAG() zeigt, wie man die tägliche Veränderung berechnet. Diese Funktion wird verwendet, um auf den Wert der vorangegangenen Zeilen zuzugreifen. Eine weitere analytische Fensterfunktion ist LEAD(), die genau das Gegenteil tut - sie holt die Daten aus den folgenden Zeilen. Beide Funktionen haben im Grunde die gleiche Syntax; Sie ändern nur den Namen der Funktion.

In diesem Beispiel möchte ich die tägliche Veränderung der Wechselkurse berechnen:

SELECT date,
	 currency_pair,
	 ecb_rate,
	 ecb_rate - LAG(ecb_rate) OVER (PARTITION BY currency_pair ORDER BY date) AS daily_rate_change
FROM exchange_rates;

LAG() ist eine Funktion für den Zugriff auf den/die Wert(e) in der/den Zeile(n) vor der aktuellen Zeile. Im obigen Beispiel gebe ich die Spalte ecb_rate in LAG() an. Das bedeutet, dass ich auf den Wert des EZB-Kurses zugreifen möchte. Ich gebe nicht explizit die Anzahl der Zeilen an, zu denen ich zurückgehen möchte, daher wird der Standardwert von einer Zeile verwendet.

OVER() kommt nach dem Funktionsnamen. Hier partitioniere ich den Datensatz nach Währungspaaren, da ich die tägliche Kursänderung für jedes Währungspaar separat berechnen möchte.

Ich verwende auch ORDER BY, um die Daten innerhalb der Partitionen zu sortieren. Da die Logik darin besteht, einen Tag zurückzugehen, müssen die Daten aufsteigend nach Datum sortiert werden.

Der Teil LAG() des Codes steht also für den Wechselkurs des Vortags. Um die tägliche Differenz zu erhalten, ziehe ich diesen Wert einfach vom aktuellen Wechselkurs ab (ecb_rate - LAG(ecb_rate)).

Hier ist die Ausgabe:

datecurrency_pairecb_ratedaily_rate_change
2024-04-02EUR_CHF0.9765NULL
2024-04-03EUR_CHF0.97920.0027
2024-04-04EUR_CHF0.98460.0054
2024-04-05EUR_CHF0.9793-0.0053
2024-04-02EUR_JPY163.0100NULL
2024-04-03EUR_JPY163.66000.6500
2024-04-04EUR_JPY164.69001.0300
2024-04-05EUR_JPY164.1000-0.5900
2024-04-02EUR_USD1.0749NULL
2024-04-03EUR_USD1.07830.0034
2024-04-04EUR_USD1.08520.0069
2024-04-05EUR_USD1.0841-0.0011

In der ersten Zeile steht NULL, weil es kein vorheriges Datum gibt, so dass die Differenz nicht berechnet werden kann. In der nächsten Zeile ist die tägliche Kursänderung 0,9792-0,9765 = 0,0027. Das gleiche Prinzip, bei dem der Wert der vorherigen Zeile vom aktuellen Wert subtrahiert wird, wird mit jeder Zeile fortgesetzt.

Da der Datensatz nach Währungspaaren unterteilt ist, wird die Berechnung zurückgesetzt, sobald andere Währungspaare erreicht werden, d. h. EUR vs. JPY und EUR vs. USD.

Weitere Lektüre:

- Die LAG-Funktion und die LEAD-Funktion in SQL

ERSTER_WERT()

Die Fensterfunktion FIRST_VALUE() kann auf unsere Daten angewendet werden, um die Unterschiede zwischen dem aktuellen und dem ersten Wechselkurs des Monats zu berechnen.

Dies ist möglich, weil FIRST_VALUE() den ersten Wert innerhalb der Partition zurückgibt. Ihr Gegenstück ist LAST_VALUE(), die den letzten Wert in der Partition zurückgibt. Beide Funktionen haben im Grunde die gleiche Syntax, nur der Name der Funktion ist anders (und natürlich das Ergebnis!).

SELECT date,
	 currency_pair,
	 ecb_rate,
	 ecb_rate - FIRST_VALUE(ecb_rate) OVER (PARTITION BY currency_pair ORDER BY date) AS difference_current_first
	  FROM exchange_rates
ORDER BY currency_pair, date;

Ich möchte den Kurswert; deshalb gibt es die Spalte ecb_rate in FIRST_VALUE(). Die Daten sind wiederum nach Währungspaaren aufgeteilt, da ich eine Berechnung für jedes Paar möchte.

OK, FIRST_VALUE() wird also verwendet, um den Wert aus der ersten Zeile in der Partition zu holen. Aber was passiert, wenn ich die Daten in der Partition aufsteigend nach Datum ordne? Richtig, die erste Zeile ist diejenige mit dem Kurs des ersten Tages des Monats. In unserem Fall ist es der erste Wechselkurs im April.

Ziehen Sie nun diesen vom aktuellen Wechselkurs ab. Da wir wissen, dass unsere Daten nur für April gelten, erhalten wir die Differenz zwischen dem aktuellen und dem ersten Kurs für diesen Monat.

datecurrency_pairecb_ratedifference_current_lowest
2024-04-02EUR_CHF0.97650.0000
2024-04-03EUR_CHF0.97920.0027
2024-04-12EUR_CHF0.9716-0.0049
2024-04-02EUR_JPY163.01000.0000
2024-04-03EUR_JPY163.66000.6500
2024-04-12EUR_JPY163.16000.1500
2024-04-02EUR_USD1.07490.0000
2024-04-03EUR_USD1.07830.0034
2024-04-12EUR_USD1.0652-0.0097

Wenn die Differenz 0 ist, sind der aktuelle und der früheste Kurs gleich. Für EUR vs. CHF ist der erste Kurs 0,9765. Prüfen wir die ersten beiden Zeilen: 0.9765 - 0.9765 = 0.0000; 0.9792 - 0.9765 = 0.0027.

Das gleiche Prinzip gilt für die beiden anderen Währungspaare.

NTILE()

Das letzte Beispiel, das ich Ihnen zeige, ist die Funktion NTILE(), die das Fenster (oder die Partition) in Gruppen unterteilt. Das Argument in den Klammern der Funktion NTILE() gibt die Anzahl der Gruppen an, in die Ihr Datensatz aufgeteilt werden soll.

Die Aufteilung erfolgt chronologisch, indem die Daten aufsteigend nach Datum geordnet werden:

SELECT date,
	 currency_pair,
	 ecb_rate,
	 NTILE(3) OVER (ORDER BY date) AS group_number
FROM exchange_rates;

Und hier ist das Ergebnis:

datecurrency_pairecb_rategroup_number
2024-04-02EUR_USD1.07491
2024-04-02EUR_JPY163.01001
2024-04-04EUR_CHF0.98461
2024-04-05EUR_USD1.08412
2024-04-05EUR_JPY164.10002
2024-04-09EUR_CHF0.98192
2024-04-10EUR_USD1.08603
2024-04-10EUR_JPY164.89003
2024-04-12EUR_CHF0.97163

Die Daten werden in drei Gruppen aufgeteilt. Da die Daten insgesamt 27 Zeilen umfassen, könnten sie in gleiche Gruppen von neun Zeilen aufgeteilt werden.

Weitere Lektüre:

Fensterfunktionen vs. GROUP BY und Aggregatfunktionen

Aggregat-Fensterfunktionen werden, wie ihr Name vermuten lässt, zum Aggregieren von Daten verwendet. Aber was ist mit "normalen" Aggregatfunktionen und GROUP BY? Auch sie werden zum Aggregieren von Daten verwendet. Worin unterscheiden sich also die Fensterfunktionen?

Der Hauptunterschied besteht darin, dass Aggregat-Fensterfunktionen (und Fensterfunktionen im Allgemeinen) einzelne Zeilen nicht einklappen, sondern den aggregierten Wert anzeigen. Andererseits können GROUP BY und Aggregatfunktionen nur die aggregierten Werte anzeigen; sie klappen einzelne Zeilen aus.

Mit einfachen Worten: Mit Fensterfunktionen können Sie die analytischen und aggregierten Daten gleichzeitig anzeigen.

Weitere Lektüre:

  1. Aggregatfunktionen vs. Fensterfunktionen: Ein Vergleich
  2. SQL Fensterfunktionen vs. GROUP BY: Was ist der Unterschied?
  3. Unterschiede zwischen GROUP BY und PARTITION BY

Fortgeschrittenes SQL Verwendung von Fensterfunktionen

Fensterfunktionen werden in der Datenanalyse häufig verwendet, da sie viele Anforderungen an die Geschäftsberichterstattung erfüllen können.

Im Folgenden finden Sie einen Überblick über einige der komplexeren Verwendungen von Fensterfunktionen.

Rangliste

Ja, ich habe bereits über das Ranking gesprochen und Ihnen ein Beispiel dafür gezeigt, wie es funktioniert. Es gibt drei Fensterfunktionen für das Ranking von Daten: ROW_NUMBER(), RANK(), und DENSE_RANK(). Sie liefern nicht notwendigerweise das gleiche Ergebnis, da sie alle leicht unterschiedliche Methoden zur Einstufung von Daten haben. Welche Sie verwenden, hängt von Ihren Daten und den gewünschten Ergebnissen ab.

Weitere Lektüre:

Laufende Summen und gleitende Durchschnitte

Diese beiden Berechnungen werden normalerweise in der Zeitreihenanalyse verwendet. Zeitreihen sind Daten, die Werte zu bestimmten Zeitpunkten anzeigen. Die Analyse solcher Daten ist, nun ja, die Zeitreihenanalyse. Ihr Zweck ist es, Trends in Daten aufzudecken und mögliche Ursachen für signifikante Abweichungen vom Trend zu finden.

Die laufende Summe (oder kumulative Summe) ist die Summe der Werte der aktuellen Zeile und aller vorangegangenen Zeilen. Wenn Sie sich in die Zukunft bewegen, erhöht sich die Größe des Zeitrahmens um eine Zeile/einen Datenpunkt, und der Wert wird zur laufenden Summe der vorherigen Zeile hinzugefügt.

Gleitende Durchschnitte sind der Durchschnittswert der letzten n Perioden. Wenn Sie sich in die Zukunft bewegen, verschiebt sich der Zeitrahmen - seine Größe bleibt jedoch gleich. Dies wird häufig in der Finanzbranche verwendet, z. B. ein gleitender 5-Tage-Durchschnitt in der Aktienkursanalyse. Auf diese Weise wird der Durchschnittspreis ständig aktualisiert, und die Auswirkungen erheblicher kurzfristiger Änderungen auf den Aktienkurs werden neutralisiert.

Differenz zwischen zwei Zeilen oder Zeitabschnitten

Die Fensterfunktion zur Berechnung der Differenz zwischen zwei Zeilen ist LAG(). Sie ermöglicht den Zugriff auf die Werte der vorhergehenden Zeilen. Die Differenz zwischen zwei Zeiträumen ist im Grunde dasselbe; sie bezieht sich nur auf die Ermittlung von Differenzen bei der Arbeit mit Zeitreihen. Im Abschnitt mit den Beispielen habe ich Ihnen gezeigt, wie man das macht.

Analysieren von Zeitreihen

Die Fensterfunktionen eignen sich hervorragend für die Analyse von Zeitreihen. Dafür gibt es nicht nur die Funktion LAG(), sondern viele andere.

Weitere Lektüre:

  1. Analysieren von Zeitreihen COVID-19-Daten mit Fensterfunktionen
  2. Berechnen der Länge einer Reihe mit SQL
  3. Analysieren einer Zeitreihe in SQL

Häufige Probleme mit SQL Fensterfunktionen

Es gibt mehrere Probleme, auf die jeder, der Fensterfunktionen verwendet, früher oder später stößt:

  1. Die Verwechslung von Fensterfunktionen mit Aggregatfunktionen und GROUP BY, die wir bereits besprochen haben.
  2. Der Versuch, Fensterfunktionen in WHERE zu verwenden. Dies ist nicht möglich, da SQL die WHERE-Bedingungen vor den Fensterfunktionen verarbeitet.
  3. Der Versuch, Fensterfunktionen in GROUP BY zu verwenden, was aufgrund der Reihenfolge der Operationen in SQL ebenfalls nicht zulässig ist: Fensterfunktionen werden nach GROUP BY ausgeführt.

Zusätzliche Ressourcen zum Üben von SQL Fensterfunktionen

SQL-Fensterfunktionen gehören zu den nützlichsten SQL-Werkzeugen, die Datenanalysten zur Verfügung stehen. Dies gilt insbesondere dann, wenn Sie über einfache Berichte hinausgehen und anspruchsvolle Berechnungen sowie die Möglichkeit benötigen, analytische und aggregierte Daten gleichzeitig anzuzeigen.

Alle in diesem Artikel behandelten Themen erfordern weitere Übungen an praktischen Beispielen, die Sie in den folgenden Artikeln und Kursen finden können:

  1. 11 SQL Fensterfunktionen Übungen mit Lösungen
  2. Die 10 wichtigsten SQL Fensterfunktionen Interview-Fragen
  3. SQL Fensterfunktionen Spickzettel
  4. Fensterfunktionen Kurs
  5. Fensterfunktionen Übungssatz

Denken Sie daran - Übung macht den Meister! Lesen Sie also nicht nur die Artikel, sondern üben Sie auch das Programmieren in der Praxis. Viel Spaß beim Lernen!