TOP

SQL-Lektion 3. Daten sortieren (ORDER BY)

In Zukunft müssen wir unsere Auswahl möglicherweise sortieren – alphabetisch für Text oder aufsteigend/absteigend – für numerische Werte. Für solche Zwecke gibt es in SQL einen speziellen Operator ORDER BY.

Der SQL-Operator ORDER BY kann sowohl von kleiner nach größer, also in aufsteigender Reihenfolge, als auch in umgekehrter Reihenfolge – von größer nach kleiner – sortieren.


1. Sortieren der ausgewählten Daten

Sortieren wir unsere gesamte Tabelle nach der Menge der Produktverkäufe, nämlich nach der Spalte „Betrag“.

Run SQLSELECT * 
FROM Sumproduct 
ORDER BY Amount

Wir sehen, dass die Abfrage die Datensätze im Feld „Betrag“ in aufsteigender Reihenfolge sortiert hat. Es ist notwendig, die Reihenfolge der Anordnung der Operatoren zu beachten, d. h. der Operator ORDER BY muss ganz am Ende der Anfrage stehen. Andernfalls wird eine Fehlermeldung angezeigt.

Ein Merkmal des Operators ORDER BY besteht außerdem darin, dass er Daten nach einem Feld sortieren kann, das wir in der Abfrage nicht ausgewählt haben, d. h. es reicht aus, dass es sich überhaupt in der Datenbank befindet.

2. Sortieren nach mehreren Feldern

Nun sortieren wir unser Beispiel zusätzlich nach einem weiteren Feld. Sei es das Feld City, das den Verkaufsort der Produkte anzeigt.

Run SQLSELECT * 
FROM Sumproduct 
ORDER BY Amount, City

Die Sortierreihenfolge hängt von der Reihenfolge der Felder in der Abfrage ab. Das heißt, in unserem Fall werden die Daten zuerst nach der Spalte „Betrag“ und dann nach „City“ sortiert.

3. Sortierrichtung

Obwohl der Operator ORDER BY standardmäßig in aufsteigender Reihenfolge sortiert, können wir die Werte auch in absteigender Reihenfolge schreiben. Dazu fügen wir am Ende jedes Feldes den Operator DESC (eine Abkürzung für das Wort DESCENDING) ein.

Run SQLSELECT * 
FROM Sumproduct 
ORDER BY Amount DESC, City

In diesem Beispiel wurden die Werte im Feld „Betrag“ in absteigender Reihenfolge und im Feld „City“ in aufsteigender Reihenfolge sortiert. Der Operator DESC gilt nur für eine Spalte und muss daher bei Bedarf nach jedem Feld geschrieben werden, das an der Sortierung beteiligt ist.