CodeGym /Kurse /SQL SELF /Beispiele für den Umgang mit NULL in echten Aufgaben: Ber...

Beispiele für den Umgang mit NULL in echten Aufgaben: Berechnungen, Filterung, Sortierung

SQL SELF
Level 10 , Lektion 3
Verfügbar

Der Umgang mit NULL begegnet dir in den unterschiedlichsten Szenarien: von der Verarbeitung fehlender Daten in Berichten bis hin zu Filterung und Sortierung. Wenn man die Wahl hätte zwischen einem fehlenden Wert in der Tabelle und einer komischen Zahl wie 9999, würden die meisten NULL wählen – ja, ich geb zu, das ist nicht immer bequem, aber wenigstens ehrlich. Schauen wir uns ein paar typische Fälle an.

Beispiel: Sortierung von Produkten mit fehlenden Preisen

Stell dir vor, wir betreiben einen Online-Shop und haben eine Produkttabelle:

product_id name price
1 Handy 45000
2 Laptop NULL
3 Kamera 25000
4 Smartwatch NULL

Wir wollen die Produkte nach Preis sortieren, wobei Produkte ohne Preis (NULL) am Ende stehen sollen.

SELECT product_id, name, price
FROM products
ORDER BY price ASC NULLS LAST;

Ergebnis:

product_id name price
3 Kamera 25000
1 Handy 45000
2 Laptop NULL
4 Smartwatch NULL

Achte auf die wichtige Konstruktion NULLS LAST. Standardmäßig packt PostgreSQL bei ASC die NULL-Werte nach vorne, aber mit diesem Parameter schieben wir sie ans Ende.

Beispiel: Filtern von Studierenden ohne Geburtsdatum

Wir haben eine Tabelle mit Studierenden und wollen nur diejenigen auswählen, bei denen kein Geburtsdatum angegeben ist.

student_id name birth_date
1 Otto Art 2000-01-15
2 Anna Song NULL
3 Alex Lin 1999-05-10
4 Maria Chi NULL

Abfrage:

SELECT student_id, name
FROM students
WHERE birth_date IS NULL;

Ergebnis:

student_id name
2 Anna Song
4 Maria Chi

Wir haben erfolgreich Infos über Studierende rausgezogen, deren Geburtsdatum unbekannt ist.

Beispiele für den Einsatz von Funktionen zum Umgang mit NULL

Beispiel: Berechnung der Gesamtsumme unter Berücksichtigung möglicher NULL

In der Bestelltabelle werden die Bestellsummen gespeichert. Aber die Daten sind nicht immer komplett, und wir müssen bedenken, dass in solchen Fällen die Summe 0 sein kann.

Beispieldaten:

order_id customer_name order_amount
1 Alex 1200
2 Maria 2500
3 Max NULL
4 Xena 3100

Abfrage:

SELECT SUM(COALESCE(order_amount, 0)) AS total_amount
FROM orders;

Ergebnis:

total_amount
6800

Wir nutzen COALESCE(order_amount, 0), um NULL vor dem Summieren durch 0 zu ersetzen. So vermeiden wir Fehler oder falsche Berechnungen.

Beispiel: Text statt NULL anzeigen

customer_name order_amount
Alex 1200
Maria 2500
Max NULL
Xena 3100

Im Bericht soll für alle leeren Daten statt NULL der Text "Nicht angegeben" angezeigt werden.

SELECT
    customer_name, 
    COALESCE(order_amount::TEXT, 'Nicht angegeben') AS order_status
FROM orders;

Ergebnis:

customer_name order_status
Alex 1200
Maria 2500
Max Nicht angegeben
Xena 3100

COALESCE() macht es möglich, einen gewünschten Text anzuzeigen, wenn der Wert NULL ist.

Komplexere Szenarien mit NULL

customer_name order_amount
Alex 1200
Maria 2500
Max NULL
Xena 3100

Unsere Aufgabe: Die Bestellungen so sortieren, dass die mit fehlender Summe ganz vorne stehen und danach absteigend von der größten zur kleinsten Summe.

SELECT customer_name, order_amount
FROM orders
ORDER BY order_amount DESC NULLS FIRST;

Ergebnis:

customer_name order_amount
Max NULL
Xena 3100
Maria 2500
Alex 1200

Hier haben wir NULLS FIRST genutzt, um NULL-Werte vor allen anderen zu platzieren.

Beispiel: Filtern von Daten mit Ersetzung von NULL-Werten

student_id name birth_date
1 Otto Art 2000-01-15
2 Anna Song NULL
3 Alex Lin 1999-05-10
4 Maria Chi NULL

In manchen Berichten sollen nur die Zeilen angezeigt werden, wo der Wert ausgefüllt ist, oder er wird durch "Unbekannt" ersetzt, wenn er NULL ist.

SELECT
    student_id, 
    name, 
    COALESCE(birth_date::TEXT, 'Unbekannt') AS birth_date_info
FROM students;

Ergebnis:

student_id name birth_date_info
1 Otto Art 2000-01-15
2 Anna Song Unbekannt
3 Alex Lin 1999-05-10
4 Maria Chi Unbekannt

Das ist besonders praktisch für Berichte, wo es wichtig ist zu zeigen, dass Daten fehlen.

Praxistipps

Der Umgang mit NULL erfordert besondere Aufmerksamkeit. Hier ein paar nützliche Tipps:

  • Nutze IS NULL und COALESCE(), um fehlende Werte zu prüfen und zu ersetzen.
  • Denk dran: Aggregatfunktionen ignorieren NULL, außer COUNT(*).
  • Für die Sortierung: Merke dir die Schlüsselwörter NULLS FIRST und NULLS LAST.
  • Gib in Berichten immer an, wie du NULL behandelst, damit es keine Missverständnisse mit Kolleg:innen gibt.

Solches Wissen hilft dir nicht nur, die richtigen Abfragen zu schreiben, sondern macht auch Eindruck im Vorstellungsgespräch. Denn mit echten Daten umgehen zu können, zählt immer mehr als nur Theorie!

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION