CodeGym /Kurse /SQL SELF /Typische Fehler beim Sortieren und Formatieren von Daten

Typische Fehler beim Sortieren und Formatieren von Daten

SQL SELF
Level 6 , Lektion 4
Verfügbar

Sortieren und Formatieren – klingt logisch und ist echt nützlich. Aber manchmal kann man sich dabei ganz schön verheddern und bekommt dann unerwartete Ergebnisse. Lass uns gemeinsam die häufigsten Fehler anschauen, damit deine Daten immer top aussehen und in der richtigen Reihenfolge kommen!

1. Sortieren von Daten mit verschiedenen Typen

Stell dir vor: Du sortierst eine Tabelle nach einer Spalte, die eine Mischung aus Zahlen und Strings enthält. PostgreSQL gibt sich Mühe, aber das Ergebnis kann dich überraschen. Zum Beispiel hast du eine Tabelle, in der value ein Text ist:

id value
1 10
2 2
3 apple
4 20

Und du schreibst die Query:

SELECT *
FROM mixed_data 
ORDER BY value;

Erwartetes Ergebnis? Vielleicht: 2, 10, 20, apple? Nope, PostgreSQL sortiert Strings nach dem lexikografischen/alphabetischen Prinzip, und das Ergebnis ist: 10, 2, 20, apple.

Wie vermeidest du den Fehler?

Wenn du weißt, dass deine Textspalte eigentlich Zahlen enthält, dann wandel sie vor dem Sortieren explizit in Zahlen um:

SELECT * FROM mixed_data ORDER BY value::INT;

Jetzt bekommst du: 2, 10, 20.

Aber Vorsicht: Wenn in deiner Spalte Strings stehen, die keine Zahlen sind, gibt’s einen Fehler!

2. Mehrere Spalten zum Sortieren angeben

Ein typischer Fehler – man vergisst die Prioritäten, wenn man nach mehreren Spalten sortiert. Zum Beispiel willst du Studenten nach Nachname und dann nach Alter sortieren, vertauschst aber die Reihenfolge:

id last_name age
1 Lin 18
2 Lin 20
3 Song 19

Deine Query:

-- Falsche Sortierung
SELECT * 
FROM students 
ORDER BY age, last_name;

Ergebnis:

id last_name age
1 Lin 18
3 Song 19
2 Lin 20

Hier sortiert PostgreSQL erst nach Alter und dann nach Nachname. Nicht ganz das, was du wolltest, oder?

Die richtige Query:

SELECT *
FROM students 
ORDER BY last_name, age;

Ergebnis:

id last_name age
1 Lin 18
2 Lin 20
3 Song 19

Jetzt wird zuerst nach Nachname sortiert und innerhalb des Nachnamens nach Alter. Genau so, wie du es wolltest!

3. Sortieren mit verschiedenen Richtungen

Manchmal willst du mehrere Spalten mit unterschiedlichen Richtungen sortieren. Zum Beispiel Produkte nach Kategorie (aufsteigend) und innerhalb der Kategorie nach Preis (absteigend). Der Fehler passiert, wenn du die Richtung für die zweite Spalte vergisst:

id category price
1 Electronics 99.99
2 Electronics 199.99
3 Furniture 299.99
4 Furniture 199.99

Deine Query:

-- Falsche Sortierung
SELECT * 
FROM products 
ORDER BY category, price;

Ergebnis: Die Preise innerhalb der Kategorien sind aufsteigend sortiert, aber du wolltest vielleicht absteigend.

Die richtige Query:

SELECT *
FROM products 
ORDER BY category ASC, price DESC;

Fehler beim Formatieren

4. Falsche Nutzung von CONCAT()

Angenommen, du willst Vorname und Nachname zu einem String zusammenfügen, vergisst aber in der Eile den Separator:

id first_name last_name
1 John Doe
2 Jane Smith

Deine Query:

SELECT
    CONCAT(first_name, last_name) AS full_name 
FROM employees;

Ergebnis:

full_name
JohnDoe
JaneSmith

Wie behebst du das?

Füge einfach ein Leerzeichen zwischen Vor- und Nachname ein:

SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;

Jetzt sieht alles viel schöner aus:

full_name
John Doe
Jane Smith

5. Fehler bei der Nutzung von CAST()

Angenommen, du willst ein Datum in einen String umwandeln, damit es schöner aussieht, vergisst aber das Format anzugeben:

id event_date
1 2023-01-15

Deine Query:

-- Falsche Umwandlung
SELECT 
    CAST(event_date AS TEXT) 
FROM events;

Ergebnis: Das Datum wird im Format YYYY-MM-DD angezeigt, was nicht immer für deine User praktisch ist.

Wie behebst du das?

Nutze die Funktion TO_CHAR() und gib das Format an:

SELECT
    TO_CHAR(event_date, 'DD-MM-YYYY') AS formatted_date 
FROM events;

Jetzt wird das Datum als 15-01-2023 angezeigt.

6. Fehler bei der Nutzung von DISTINCT

DISTINCT ist ein mächtiges Tool, um einzigartige Werte zu bekommen, aber manchmal wird es falsch verwendet. Zum Beispiel willst du eine Liste mit einzigartigen Mitarbeiternamen:

SELECT DISTINCT first_name, last_name
FROM employees;

Auf den ersten Blick sieht die Query korrekt aus, aber wenn zwei Mitarbeiter den gleichen Vor- und Nachnamen haben, erscheinen sie als ein Ergebnis, auch wenn es verschiedene Leute sind.

Beispieldaten:

id first_name last_name
1 Alex Lin
2 Maria Chi
3 Alex Lin

Ergebnis der Query:

first_name last_name
Alex Lin
Maria Chi

Wie vermeidest du den Fehler?

Füge den Primärschlüssel hinzu, um echte Einzigartigkeit zu garantieren:

SELECT DISTINCT ON (id) first_name, last_name
FROM employees;

Ergebnis der Query mit DISTINCT ON (id):

id first_name last_name
1 Alex Lin
2 Maria Chi
3 Alex Lin

Wie kannst du Fehler vermeiden?

Mit Daten zu arbeiten braucht ein Auge fürs Detail. Damit du die oben genannten Fehler vermeidest:

Checke die Datentypen: Stelle sicher, dass die Funktionen, die du nutzt, die Typen deiner Spalten unterstützen.

Checke die Sortierreihenfolge: Achte darauf, dass die Spalten in der richtigen Reihenfolge stehen. Vergiss nicht die Sortierrichtungen ASC, DESC.

Teste deine Queries mit kleinen Datensätzen: So findest du Fehler schon früh.

Vergiss nicht die PostgreSQL Doku: Sie hilft dir bei kniffligen Fragen zu Funktionen und deren Nutzung. Hier der Link: off. PostgreSQL Dokumentation.

Jetzt bist du bereit, jedes Rätsel rund ums Formatieren und Sortieren zu knacken! Weiter geht’s.

1
Umfrage/Quiz
Extrahieren von einzigartigen Werten, Level 6, Lektion 4
Nicht verfügbar
Extrahieren von einzigartigen Werten
Extrahieren von einzigartigen Werten
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION