Einer der beliebtesten Anwendungsfälle für Datenbanken ist die Vorbereitung von Daten für Berichte. Stell dir vor: Du arbeitest an einer Uni und dein Chef (der natürlich null Ahnung von SQL hat) bittet dich, eine Liste von Studierenden zu erstellen, bei der Vor- und Nachname zusammengeführt werden und das Geburtsdatum im Format DD-MM-YYYY angezeigt wird. Die Aufgabe ist klar: Die Daten sollen hübsch aussehen. Und SQL ist dabei unser bester Kumpel.
Beispiel 1: Vor- und Nachname zusammenführen
Starten wir damit, den Vornamen (first_name) und Nachnamen (last_name) der Studierenden aus unserer Tabelle students zu verbinden.
SELECT
CONCAT(first_name, ' ', last_name) AS full_name
FROM
students;
Was passiert hier?
CONCAT()verbindet Strings. Wir fügen ein Leerzeichen zwischen Vor- und Nachnamen ein, damit es besser aussieht.- Das Ergebnis landet in einer neuen Spalte
full_name.
Das Ergebnis könnte so aussehen:
| full_name |
|---|
| Otto Art |
| Anna Song |
| Pol Mac |
Beispiel 2: Datum formatieren
Jetzt fügen wir unserem Query noch die Formatierung des Geburtsdatums hinzu.
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM
students;
Neu hier:
- Wir wenden die Funktion
TO_CHAR()auf das Feldbirth_datean. - Das Format
'DD-MM-YYYY'macht das Datum schön lesbar (zum Beispiel:25-12-2001).
Das Ergebnis:
| full_name | formatted_birth_date |
|---|---|
| Otto Art | 12-04-1995 |
| Anna Song | 03-08-1996 |
| Pol Mac | 21-11-1997 |
Voilà! Du hast gerade einen schicken Report gebaut.
Formatierung für Datenexport
Angenommen, einer deiner Kollegen will Bestelldaten als CSV-Datei exportieren, um sie in Excel weiterzuverarbeiten. Aber die Datenbank speichert die Infos in einem für ihn unpraktischen Format und die Leute aus dem Sales wollen es ganz genau so haben. Zum Beispiel möchten sie statt dem Feld total_price, wo der Bestellpreis steht, lieber sowas wie: $100.00 sehen.
Beispiel 3: Zahlen ins Währungsformat bringen
Wir machen die Bestelldaten aus der Tabelle orders exportfertig:
SELECT
order_id,
TO_CHAR(total_price, 'FM$999,999.00') AS formatted_price
FROM
orders;
Was macht TO_CHAR() hier?
FM(Fill Mode) entfernt unnötige Leerzeichen.$fügt das Währungssymbol hinzu.999,999.00sorgt für Tausendertrennzeichen und zwei Nachkommastellen.
Das Ergebnis:
| order_id | formatted_price |
|---|---|
| 1 | $1,000.00 |
| 2 | $2,500.50 |
| 3 | $10.00 |
Jetzt kann dein Kollege die Daten easy in Excel importieren und dich im Meeting loben.
Finale Aufgabe
Jetzt wird’s spannend. Lass uns alles kombinieren, was du schon gelernt hast.
Aufgabe
Schreib ein Query für die Tabelle students, das:
- Vor- und Nachname in einer Spalte
full_namezusammenführt. - Das Geburtsdatum ins Format
DD-MM-YYYYbringt. - Das Alter des Studierenden zum aktuellen Datum anzeigt.
Das Query könnte so aussehen:
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date,
DATE_PART('year', AGE(birth_date)) AS age
FROM
students;
Neue Elemente:
AGE(birth_date)gibt das Intervall zwischen aktuellem Datum und Geburtsdatum zurück, aber als Jahre, Monate und Tage.DATE_PART('year', AGE(birth_date))holt aus diesem Intervall nur die Anzahl der Jahre raus.
Das Ergebnis:
| full_name | formatted_birth_date | age |
|---|---|---|
| Otto Art | 12-04-1995 | 28 |
| Anna Song | 03-08-1996 | 27 |
| Pol Mac | 21-11-1997 | 25 |
So ein Report macht sogar die pingeligsten Kollegen glücklich.
Formatierung für spezielle Bedingungen
Manchmal braucht man Formatierung, um Bedingungen oder Filter zu bauen. Zum Beispiel holen wir uns die Studierenden, die im aktuellen Monat Geburtstag haben.
Beispiel 4: Filtern nach Monat
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM
students
WHERE
DATE_PART('month', birth_date) = DATE_PART('month', CURRENT_DATE);
Wie funktioniert das?
DATE_PART('month', birth_date)holt den Monat aus dem Geburtsdatum.CURRENT_DATEgibt das aktuelle Datum. Wir holen daraus den Monat mitDATE_PART().
Formatierung und Sortierung kombinieren
Jetzt kombinieren wir alles Gelernte und fügen noch eine Sortierung hinzu. Zum Beispiel erstellen wir eine Liste von Studierenden, sortiert nach ihrem Geburtsdatum.
Beispiel 5: Sortieren nach Geburtsdatum
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM
students
ORDER BY
birth_date ASC;
Sortierung aufsteigend (ASC) zeigt zuerst die ältesten Studierenden, absteigend (DESC) die jüngsten.
Kombinieren mit einzigartigen Werten
Zum Schluss – eine Aufgabe mit Sternchen. Stell dir vor, unsere Uni hat Standorte in mehreren Städten und du sollst eine Liste der einzigartigen Städte machen, in denen Studierende lernen, und zwar alphabetisch sortiert.
Beispiel 6: Einzigartige Werte und Sortierung
SELECT DISTINCT
city
FROM
students
ORDER BY
city ASC;
Was macht DISTINCT?
Es entfernt doppelte Werte, sodass jede Stadt nur einmal im Ergebnis steht.
Wozu das Ganze?
Bequemlichkeit und Style. Wenn Daten schön formatiert sind, arbeitet es sich leichter und die Chefs stellen weniger Fragen.
Fit für die echte Welt. Du kannst automatisch Reports generieren, Exporte machen und schicke Präsentationen vorbereiten.
Du wirst wertvoller. SQL ist nicht nur Daten. Es geht darum, sie verständlich und nützlich zu machen.
Nutz die Skills, um nicht nur Queries zu schreiben, sondern echte Meisterwerke zu bauen! In den nächsten Vorlesungen tauchen wir noch tiefer in die Magie von PostgreSQL ein.
GO TO FULL VERSION