CodeGym /Kurse /SQL SELF /Datensortierung (ORDER BY): aufsteigende und absteigende ...

Datensortierung (ORDER BY): aufsteigende und absteigende Sortierung (ASC, DESC)

SQL SELF
Level 2 , Lektion 3
Verfügbar

Wenn du mit Datenbanken arbeitest, willst du oft eine bestimmte Reihenfolge in den Daten sehen. Zum Beispiel:

  • "Zeig mir die Top-10 der teuersten Produkte."
  • "Welche Bestellungen waren die letzten?"
  • "Wie alt sind die Schüler, angefangen bei den jüngsten?"

Der Wunsch, Daten zu ordnen, ist total verständlich: Selbst wenn du ein superkrasser Programmierer bist, ist es nicht gerade spaßig, einen chaotischen Haufen von Zeilen zu durchwühlen. Genau deshalb gibt uns SQL ein Tool, um die Zeilen im Ergebnis zu sortieren – den ORDER BY-Operator.

Grundlagen der Sortierung mit ORDER BY

ORDER BY ist wie ein Zauberstab, mit dem du die Reihenfolge der Zeilen im Resultset bestimmst. Ohne ihn kommen die Daten in "beliebiger" Reihenfolge zurück (das ist kein Fehler der Datenbank, die Reihenfolge ist einfach nicht garantiert).

So sieht der Syntax von ORDER BY aus:

SELECT spalte1, spalte2
FROM tabelle
ORDER BY spalte1 DESC;
  • spalte1: Name der Spalte, nach der du sortieren willst.
  • ASC: aufsteigende Sortierung (das ist der Standardwert, du kannst es also weglassen).
  • DESC: absteigende Sortierung.

Beispiel

Nehmen wir an, wir haben eine Tabelle students:

id name age
1 Alex 22
2 Maria 19
3 Otto 21

Lass uns die Studenten nach Alter sortieren (aufsteigend):

SELECT name, age
FROM students
ORDER BY age ASC;

Ergebnis:

name age
Maria 19
Otto 21
Alex 22

Wenn du die Sortierrichtung auf absteigend änderst:

SELECT name, age
FROM students
ORDER BY age DESC;

Das Ergebnis sieht so aus:

name age
Alex 22
Otto 21
Maria 19

Sortierung nach mehreren Spalten

Manchmal reicht eine Spalte zum Sortieren nicht aus. Stell dir vor, es gibt mehrere Studenten mit demselben Alter in der Datenbank, und du willst noch zusätzlich nach Name sortieren.

Sortierung nach mehreren Spalten:

SELECT spalte1, spalte2
FROM tabelle
ORDER BY spalte1 DESC, spalte2 ASC;

Hier ein Beispiel für die folgende Tabelle:

id name age
1 Alex 22
2 Maria 19
3 Otto 21
4 Anna 19

Query:

SELECT name, age
FROM students
ORDER BY age ASC, name ASC;

Ergebnis:

name age
Anna 19
Maria 19
Otto 21
Alex 22

Hier wird zuerst nach Alter (aufsteigend) sortiert, und innerhalb jedes Alters dann nach Name alphabetisch.

Sortierung mit Aliassen

Wenn du Aliasse für Spalten verwendest, kannst du auch nach diesen Aliassen sortieren.

SELECT name AS "Name", age AS "Alter"
FROM students
ORDER BY "Alter" DESC;

Ergebnis:

Name Alter
Alex 22
Otto 21
Maria 19

Warum ist das wichtig? Früher ging das nicht, und es gab Probleme beim Sortieren nach berechneten Spalten.

Sortierung mit berechneten Spalten

SQL erlaubt es dir, direkt im Query Berechnungen durchzuführen und dann nach dem Ergebnis dieser Berechnungen zu sortieren.

Beispiel 1. Einfachste Berechnung

SELECT name, age, age * 2 AS doubled_age
FROM students
ORDER BY doubled_age DESC;

Ergebnis:

name age doubled_age
Alex 22 44
Otto 21 42
Maria 19 38

Beispiel 2. Verwendung von Funktionen. Angenommen, wir speichern Preise für Produkte in der Tabelle products:

product_name price
Produkt A 100
Produkt B 200
Produkt C 150

Und jetzt sortieren wir nach dem gerundeten Preis, multipliziert mit 0.9 (zum Beispiel mit Rabatt). Die Funktion ROUND gibt eine Zahl gerundet auf die gewünschte Nachkommastelle zurück.

SELECT product_name, price, ROUND(price * 0.9, 1) AS discounted_price
FROM products
ORDER BY discounted_price ASC;

So sieht das Ergebnis aus:

product_name price discounted_price
Produkt A 100 90
Produkt C 150 135
Produkt B 200 180

Praktische Anwendung der Sortierung

Sortierung spielt eine Schlüsselrolle in folgenden Szenarien:

  • Erstellung von Reports, z.B. Top-10 der besten Verkäufe im Monat.
  • Anzeige von Daten für User-Interfaces, z.B. eine Bestellliste sortiert nach Datum.
  • Generierung von Listen für Analytics, z.B. Hervorhebung von Gruppen nach Priorität.

Typische Fehler bei der Verwendung von ORDER BY

Fehler können an jeder Ecke lauern. Hier ein paar Dinge, auf die du achten solltest:

  • Wenn du versuchst, nach einer Spalte zu sortieren, die es nicht gibt, bekommst du einen Fehler: column "not_a_column" does not exist.
  • Sortieren nach einem Alias, der in einer berechneten Spalte verwendet wird, kann verwirrend sein, wenn der Alias auf einer höheren Ebene definiert ist.
  • Wenn du aus Versehen die Sortierrichtung vergisst, nimmt PostgreSQL standardmäßig ASC. Das ist kein Fehler, kann aber zu unerwarteten Ergebnissen führen.

Jetzt weißt du, wie du die Sortierung in PostgreSQL mit ORDER BY steuerst. Denk dran: Gut organisierte Daten sind die halbe Miete für effektive SQL-Queries. Weiter geht's zum nächsten Thema! 😉

1
Umfrage/Quiz
Einführung in SQL, Level 2, Lektion 3
Nicht verfügbar
Einführung in SQL
Einführung in SQL
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION