Sobes.tech
Middle

Wofür werden Fensterfunktionen in SQL verwendet?

sobes.tech KI

Antwort von AI

Fensterfunktionen in SQL führen Aggregationen von Daten in einem Satz von Zeilen durch, die mit der aktuellen Zeile verbunden sind, gruppieren jedoch nicht den Ergebnisdatensatz. Dies ermöglicht Berechnungen wie kumulative Summen, gleitende Durchschnitte oder Rangierungen, während alle Zeilen der ursprünglichen Abfrage erhalten bleiben.

Hauptziele der Verwendung von Fensterfunktionen:

  • Rangfolge: Zuweisung eines Rangs an jede Zeile in einem bestimmten Fenster.
    -- Rang der Mitarbeiter nach Gehalt innerhalb jeder Abteilung
    SELECT
        employee_name,
        salary,
        department,
        RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank
    FROM
        employees;
    
  • Berechnung von Statistiken für eine Gruppe von Zeilen ohne Gruppierung: Aggregation von Daten innerhalb eines "Fensters" von Zeilen, wobei die Detailgenauigkeit auf Zeilenebene erhalten bleibt.
    -- Durchschnittsgehalt pro Abteilung für jede Zeile berechnen
    SELECT
        employee_name,
        salary,
        department,
        AVG(salary) OVER (PARTITION BY department) as avg_department_salary
    FROM
        employees;
    
  • Vergleich der aktuellen Zeile mit anderen Zeilen im Fenster: Zugriff auf Daten aus vorherigen oder nachfolgenden Zeilen im Fenster.
    -- Gehalt des vorherigen Mitarbeiters in der Abteilung in absteigender Gehaltsreihenfolge
    SELECT
        employee_name,
        salary,
        department,
        LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary
    FROM
        employees;
    
  • Berechnungen mit kumulativen Summen: Berechnung von Summen, Durchschnitten und anderen Aggregationen in einer aufsteigenden Summe.
    -- Kumulative Summe der Verkäufe nach Datum berechnen
    SELECT
        sale_date,
        amount,
        SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales
    FROM
        sales;
    

Im Gegensatz zu normalen Aggregatfunktionen (GROUP BY) fassen Fensterfunktionen Zeilen nicht zusammen, was sie zu einem mächtigen Werkzeug für analytische Abfragen und detaillierte Datenanalysen macht.