5 SQL-Funktionen, die kaum jemand richtig kennt

SQL ist aus der Arbeit mit Datenbanken nicht wegzudenken. Jeder, der regelmäßig mit Daten arbeitet, kennt die Basics wie SELECT, WHERE oder JOIN. Doch SQL bietet deutlich mehr – Funktionen, die die Arbeit mit Daten nicht nur erleichtern, sondern auch eleganter machen können.

In diesem Artikel stelle ich dir fünf SQL-Funktionen vor, die oft übersehen werden, obwohl sie sehr mächtig sind. Ich erkläre dir, wie sie funktionieren, zeige praktische Beispiele und gebe Tipps, wie du sie in deinen Projekten einsetzen kannst. So lernst du, deine Abfragen kompakter, effizienter und flexibler zu gestalten.

SQL unbekannte Funktionen

Funktion 1: COALESCE

Die SQL-Funktion COALESCE hilft dir, NULL-Werte in deinen Abfragen elegant zu behandeln. Sie gibt den ersten Wert zurück, der nicht NULL ist, und ignoriert alle NULL-Werte davor.

Syntax

COALESCE(Wert1, Wert2, ..., WertN)

Beispiel

SELECT COALESCE(Telefon, Mobil, 'Keine Nummer') AS Kontakt
FROM Kunden;

In diesem Beispiel prüft COALESCE, ob die Spalte Telefon einen Wert enthält. Wenn nicht, wird Mobil genommen. Wenn beide NULL sind, wird ‚Keine Nummer‘ zurückgegeben.

Praxisnutzen

  • Standardwerte setzen, wenn Daten fehlen.
  • Datenbereinigung und bessere Lesbarkeit von Ergebnissen.
  • Vermeidung von Fehlern bei Berechnungen mit NULL-Werten.

Funktion 2: CASE

Mit der SQL-Funktion CASE kannst du Bedingungen direkt in deinen Abfragen abbilden. Sie funktioniert ähnlich wie eine Wenn-Dann-Sonst-Logik in Programmiersprachen und ermöglicht es, unterschiedliche Werte basierend auf Bedingungen zurückzugeben.

Syntax

CASE
    WHEN Bedingung1 THEN Ergebnis1
    WHEN Bedingung2 THEN Ergebnis2
    ...
    ELSE StandardErgebnis
END

Beispiel

SELECT Name,
       CASE
         WHEN Umsatz > 10000 THEN 'Top-Kunde'
         WHEN Umsatz BETWEEN 5000 AND 10000 THEN 'Guter Kunde'
         ELSE 'Neukunde'
       END AS Kundentyp
FROM Kunden;

Hier klassifiziert CASE Kunden basierend auf ihrem Umsatz. So kannst du direkt in der Abfrage Kategorien erstellen, ohne die Daten vorher zu bearbeiten.

Praxisnutzen

  • Dynamische Klassifikationen und Kategorisierungen in Abfragen.
  • Komplexe Berechnungen und Entscheidungen direkt in der Datenbank.
  • Reduziert die Notwendigkeit zusätzlicher Spalten oder Vorverarbeitung.

Funktion 3: STRING_AGG

Die SQL-Funktion STRING_AGG fasst mehrere Werte aus unterschiedlichen Zeilen zu einem einzigen String zusammen. So kannst du Listen direkt in der Abfrage erzeugen, ohne sie später in der Anwendung zusammenfügen zu müssen.

Syntax

STRING_AGG(Wert, Trennzeichen)

Beispiel

SELECT KundeID, STRING_AGG(Produktname, ', ') AS Produkte
FROM Bestellungen
GROUP BY KundeID;

In diesem Beispiel werden alle Produkte eines Kunden in einer Zeile zusammengeführt, getrennt durch ein Komma. So erhältst du auf einfache Weise eine übersichtliche Produktliste pro Kunde.

Praxisnutzen

  • Erstellen von Listen aus mehreren Zeilen direkt in SQL.
  • Ideal für Reporting, Zusammenfassungen oder Export von Daten.
  • Reduziert den Bedarf an zusätzlicher Verarbeitung in der Anwendung.

Funktion 4: LAG

Die SQL-Funktion LAG ermöglicht es dir, auf Werte aus vorherigen Zeilen innerhalb derselben Ergebnismenge zuzugreifen. Damit kannst du Vergleiche oder Berechnungen über aufeinanderfolgende Zeilen hinweg durchführen.

Syntax

LAG(Wert [, Offset [, Standardwert]]) OVER (PARTITION BY ... ORDER BY ...)

Beispiel

SELECT Datum, Umsatz,
       LAG(Umsatz, 1, 0) OVER (ORDER BY Datum) AS VorwochenUmsatz
FROM Verkäufe;

Hier wird der Umsatz der Vorwoche in einer neuen Spalte angezeigt. Wenn keine vorherige Zeile existiert, wird der Standardwert 0 verwendet.

Praxisnutzen

  • Vergleich von Werten zwischen aufeinanderfolgenden Zeilen, z. B. Umsatzentwicklung.
  • Analyse von Trends und Berechnung von Differenzen über Zeitreihen.
  • Ersetzt oft komplexe Self-Joins und macht Abfragen eleganter.

Funktion 5: NULLIF

Die SQL-Funktion NULLIF vergleicht zwei Werte und gibt NULL zurück, wenn sie gleich sind. Andernfalls wird der erste Wert zurückgegeben. So lassen sich Divisionen durch Null oder unerwünschte Vergleichswerte elegant verhindern.

Syntax

NULLIF(Wert1, Wert2)

Beispiel

SELECT Umsatz / NULLIF(AnzahlBestellungen, 0) AS DurchschnittUmsatz
FROM Kunden;

In diesem Beispiel verhindert NULLIF, dass eine Division durch Null erfolgt. Wenn AnzahlBestellungen 0 ist, gibt die Funktion NULL zurück, statt einen Fehler zu erzeugen.

Praxisnutzen

  • Vermeidung von Fehlern bei Divisionen durch Null.
  • Elegante Handhabung von Sonderfällen in Berechnungen.
  • Ersetzt oft komplizierte CASE-Abfragen für gleiche Werte.

Fazit

In diesem Artikel haben wir fünf SQL-Funktionen vorgestellt, die oft übersehen werden, aber große Vorteile bringen können:

  • COALESCE: NULL-Werte elegant behandeln und Standardwerte setzen.
  • CASE: Bedingte Logik direkt in Abfragen abbilden.
  • STRING_AGG: Mehrere Zeilen zu einer Liste zusammenführen.
  • LAG: Werte aus vorherigen Zeilen vergleichen und Trends analysieren.
  • NULLIF: Vergleiche vereinfachen und Divisionen durch Null verhindern.

Diese Funktionen helfen dir, Abfragen kompakter, effizienter und flexibler zu gestalten. Nutze sie, um deine SQL-Kenntnisse zu vertiefen und deine Datenanalyse auf ein neues Level zu bringen. Experimentiere mit den Funktionen in deinen eigenen Projekten, um ihre Möglichkeiten vollständig auszuschöpfen.