Lernen Sie die SQL ORDER BY-Klausel kennen! Unsere praktischen und einfachen Beispiele werden Ihnen helfen, die Syntax, die üblichen Verwendungen und die besten Praktiken zu verstehen.
Mit SQL oder Structured Query Language können Sie mit einer Datenbank "sprechen". Sie ermöglicht es Ihnen, Daten in einer relationalen Datenbank zu erstellen, abzurufen und zu bearbeiten. Diese Sprache ist inzwischen so allgegenwärtig, dass kaum ein datenbezogener Bereich von ihr unberührt bleibt.
Wenn Sie sich für die SQL-Klausel ORDER BY interessieren, nehme ich an, dass Sie entweder bereits mit dem Erlernen von SQL begonnen haben oder dies bald tun werden. Diese Klausel wird verwendet, um Ergebnisse in einer bestimmten Reihenfolge zu sortieren. In diesem Artikel werden wir einige praktische Beispiele behandeln, um ihre Verwendung zu demonstrieren. Wenn Sie mit den Grundlagen von SQL-Abfragen noch nicht vertraut sind, empfehle ich Ihnen unseren SQL für Anfänger Kurs.
Lassen Sie uns direkt in die SQL ORDER BY
Klausel eintauchen.
Was ist die SQL ORDER BY-Klausel?
Wie bereits erwähnt, wird die SQL ORDER BY-Klausel verwendet, um Abfrageergebnisse in einer bestimmten Reihenfolge anzuordnen. Nehmen wir an, Sie sind ein Hochschulprofessor und möchten eine Liste der Studenten, die in Ihrer Klasse eingeschrieben sind, in alphabetischer Reihenfolge ausgeben. Wenn Sie diese Informationen in einer Datenbank gespeichert haben, können Sie mit einer einfachen Abfrage die Ergebnisse ausgeben.
Meiner Erfahrung nach ist ORDER BY
eines der nützlichsten SQL-Konstrukte; in fast allen Berichten und Analysen wird es verwendet.
Ich möchte Ihnen anhand eines Beispiels zeigen, wie Sie eine einfache Abfrage mit ORDER BY
schreiben können.
Beispiel 1: ORDER BY mit einer numerischen Spalte
Stellen Sie sich vor, Sie arbeiten als Verkaufsleiter in einem Unternehmen. Die Datenbank Ihres Unternehmens speichert die Verkaufsdaten für jeden Verkäufer in der folgenden Tabelle, die sales_performance
:
sales_person_id | name | territory | total_sales_value | joining_date |
---|---|---|---|---|
2333 | Gregorio | Bavaria | 19220 | 21-Sep-2021 |
4323 | Aaron | London | 320000 | 10-Jan-2018 |
1113 | Sebastian | London | 32433 | 31-Oct-2020 |
4134 | Pierre | Paris | 21214 | 01-Aug-2020 |
Angenommen, Sie möchten diese Liste von Verkäufern abrufen. Sie möchten sie nach ihrer ID-Nummer in aufsteigender Reihenfolge auflisten (d. h. von der kleinsten bis zur größten, von A-Z usw.). Ihre Abfrage sieht dann etwa so aus:
SELECT * FROM sales_performanceORDER BY sales_person_id;
Ausgabe:
sales_person_id | name | territory | total_sales_value | joining_date |
---|---|---|---|---|
1113 | Sebastian | London | 32433 | 31-Oct-2020 |
2333 | Gregorio | Bavaria | 19220 | 21-Sep-2021 |
4134 | Pierre | Paris | 21214 | 01-Aug-2020 |
4323 | Aaron | London | 320000 | 10-Jan-2018 |
Bei der Abfrage werden alle Datensätze und Spalten aus der Tabelle sales_performance
Tabelle zurückgibt und dann die Ergebnisse auf der Grundlage der numerischen Reihenfolge der Spalte sales_person_id
anordnet.
Beachten Sie, dass ORDER BY
standardmäßig in aufsteigender Reihenfolge sortiert. Sie können zwar das Schlüsselwort ASC
verwenden, um anzugeben, dass Sie die Ergebnisse in aufsteigender Reihenfolge haben möchten, aber Sie müssen es nicht unbedingt angeben. In einem Feld mit Zahlen steht bei aufsteigender Reihenfolge die kleinste Zahl an erster Stelle, gefolgt von der nächstkleineren und so weiter. Die größte Zahl steht an letzter Stelle.
Beispiel 2: ORDER BY mit einer Textspalte
Sie können die gleiche Klausel auch verwenden, um Spaltenwerte in alphabetischer Reihenfolge zu sortieren. Angenommen, Sie möchten eine Liste von Vertriebsmitarbeitern, geordnet nach den Vornamen der Vertriebsmitarbeiter. Hier ist die Abfrage:
SELECT * FROM sales_performanceORDER BY name;
Ausgabe:
sales_person_id | name | territory | total_sales_value | joining_date |
---|---|---|---|---|
4323 | Aaron | London | 320000 | 10-Jan-2018 |
2333 | Gregorio | Bavaria | 19220 | 21-Sep-2021 |
4134 | Pierre | Paris | 21214 | 01-Aug-2020 |
1113 | Sebastian | London | 32433 | 31-Oct-2020 |
Die Datensätze sind nun in alphabetischer Reihenfolge nach name
sortiert. In aufsteigender Reihenfolge bedeutet dies, dass die Namen alphabetisch von A bis Z aufgelistet sind.
Beispiel 3: ORDER BY mit einer Datumsspalte
Sie können die Ergebnisse auch nach einer Datumsspalte wie joining_date
sortieren. Im Falle der Datumsspalte gibt die Standardabfrage die Datensätze vom ältesten bis zum neuesten Datum zurück:
SELECT * FROM sales_performanceORDER BY joining_date;
Ausgabe:
sales_person_id | name | territory | total_sales_value | joining_date |
---|---|---|---|---|
4323 | Aaron | London | 320000 | 10-Jan-2018 |
4134 | Pierre | Paris | 21214 | 01-Aug-2020 |
1113 | Sebastian | London | 32433 | 31-Oct-2020 |
2333 | Gregorio | Bavaria | 19220 | 21-Sep-2021 |
Hier sind die Ergebnisse nach joining_date
sortiert, vom ältesten bis zum neuesten Datum.
Beispiel 4: Ordnung in absteigender Reihenfolge
Bis jetzt wurden alle Datensätze in aufsteigender Reihenfolge sortiert. Sie können die Datensätze jedoch auch in absteigender Reihenfolge anordnen - schreiben Sie einfach das Schlüsselwort DESC
hinter den Spaltennamen.
Angenommen, Sie möchten diese Liste nach dem Gesamtumsatz der einzelnen Verkäufer sortieren. Sie möchten die größte Zahl (d. h. den höchsten Umsatz) zuerst sehen, also müssen Sie in absteigender Reihenfolge sortieren. Versuchen wir die folgende Abfrage:
SELECT * FROM sales_performanceORDER BY total_sales_value DESC;
Ausgabe:
sales_person_id | name | territory | total_sales_value | joining_date |
---|---|---|---|---|
4323 | Aaron | London | 320000 | 10-Jan-2018 |
1113 | Sebastian | London | 32433 | 31-Oct-2020 |
4134 | Pierre | Paris | 21214 | 01-Aug-2020 |
2333 | Gregorio | Bavaria | 19220 | 21-Sep-2021 |
Die Ergebnisse werden in absteigender Reihenfolge (10-1) nach dem Gesamtumsatzwert sortiert. Sie können dies auch mit Text- oder Datumswerten tun; in diesem Fall werden die Ergebnisse von Z nach A (Text) oder vom neuesten zum ältesten (Datum) sortiert.
Die Schlüsselwörter DESC
oder ASC
können je nach Bedarf verwendet werden. Wenn Sie das Schlüsselwort weglassen, werden die Ergebnisse in aufsteigender Reihenfolge angezeigt.
Beispiel 5: ORDER BY unter Verwendung einer Spalternummer
Sie können auch auf eine Spalte verweisen, indem Sie einen numerischen Verweis verwenden, der auf der Reihenfolge der Spalten in der Tabelle basiert. Mit anderen Worten, Sie verwenden eine Nummer anstelle des Spaltennamens. Schauen Sie sich das folgende Beispiel an, um mehr Klarheit zu erhalten:
SELECT sales_person_id, name FROM sales_performanceORDER BY 2;
Ausgabe:
sales_person_id | name |
---|---|
4323 | Aaron |
2333 | Gregorio |
4134 | Pierre |
1113 | Sebastian |
Der Spaltenname ist die zweite Spalte in unserer Tabelle. Wir möchten die von der Abfrage zurückgegebenen Werte nach dem Namen des Vertreters ordnen, aber anstatt Name nach ORDER BY
zu schreiben, haben wir 2
geschrieben.
Hinweis: Dieser Ansatz wird nur für interaktive Abfragen empfohlen. Es wird nicht empfohlen, Skripte zu schreiben, da Abfragen mit Zahlen in ORDER BY
schwer zu handhaben sind.
Beispiel 6: Sortieren mehrerer Spalten
Beim Schreiben echter Abfragen sind Ihre Anforderungen selten so einfach wie in den Beispielen, die wir verwendet haben; möglicherweise müssen Sie Ihre Werte nach mehreren Spalten sortieren.
Mit der ORDER BY
Klausel können Sie das tun, indem Sie eine Liste von Spalten angeben; trennen Sie die Spaltennamen einfach mit Kommas. Sie können die Schlüsselwörter ASC
oder DESC
(falls gewünscht) mit jeder Spalte verwenden, um die Spalte in aufsteigender oder absteigender Reihenfolge zu sortieren.
Nehmen wir an, Sie müssen die Tabellendatensätze in absteigender Reihenfolge nach territory
und dann nach dem Namen des Verkäufers anzeigen. Ihre Abfrage wird etwa so aussehen.
SELECT * FROM sales_performanceORDER BY territory DESC, name ASC;
Ausgabe:
sales_person_id | name | territory | total_sales_value | joining_date |
---|---|---|---|---|
4134 | Pierre | Paris | 21214 | 01-Aug-2020 |
4323 | Aaron | London | 320000 | 10-Jan-2018 |
1113 | Sebastian | London | 32433 | 31-Oct-2020 |
2333 | Gregorio | Bavaria | 19220 | 21-Sep-2021 |
Sie werden in der Ausgabe feststellen, dass die Spalte territory
in umgekehrter alphabetischer (d. h. absteigender) Reihenfolge angeordnet ist. Für das Gebiet London werden die Datensätze in alphabetischer Reihenfolge nach Namen angezeigt.
Beispiel 7: Verwendung von ORDER BY mit Ausdrücken
Sie können auch nach mehr als nur Spaltennamen sortieren; SQL erlaubt die Verwendung von Ausdrücken beim Sortieren von Werten. Nehmen wir zum Beispiel an, Sie möchten durch die Verkettung von territory
und name
in aufsteigender Reihenfolge sortieren. Hier ist die Abfrage:
SELECT *FROM sales_performanceORDER BY CONCAT(territory, name);
Ausgabe:
sales_person_id | name | territory | total_sales_value | joining_date |
---|---|---|---|---|
2333 | Gregorio | Bavaria | 19220 | 21-Sep-2021 |
4323 | Aaron | London | 320000 | 10-Jan-2018 |
1113 | Sebastian | London | 32433 | 31-Oct-2020 |
4134 | Pierre | Paris | 21214 | 01-Aug-2020 |
Hier werden die Datensätze durch eine Verkettung von territory
und name
geordnet. Somit stehen Bavaria
und Gregorio
in alphabetischer Reihenfolge an erster Stelle und Paris Pierre
an letzter Stelle.
Sie können CASE in ORDER BY verwenden, um eine wirklich präzise Reihenfolge zu erhalten.
Möchten Sie die Verwendung von ORDER BY in SQL üben?
Ich hoffe, diese Beispiele haben die Verwendung der ORDER BY
Klausel deutlich gemacht. Das Sortieren von Daten ist eine der wichtigsten Anforderungen in den meisten Ansichten und Berichten, weshalb es wichtig ist, die Verwendung von ORDER BY
zu beherrschen. Und der Schlüssel zum Erfolg beim Schreiben von Abfragen ist Übung!
Je mehr Abfragen Sie für verschiedene Anwendungsfälle schreiben, desto intuitiver wird das Schreiben von Abfragen. Wenn Sie auf der Suche nach ein paar tollen SQL-Übungen sind, schauen Sie sich unsere interaktiven SQL-Übungssatz. Es bietet 88 interaktive Übungen, die von einfach bis fortgeschritten reichen.
Und wenn Sie eine umfassende Lernerfahrung suchen, ist unser SQL von A bis Z Track genau das Richtige für Sie. Er bietet 7 interaktive Kurse und wird Sie auf den Weg zu professionellen SQL-Kenntnissen bringen. Oder lesen Sie diesen Artikel über die verschiedenen Möglichkeiten, SQL zu lernen.
Alles Gute und viel Spaß beim Lernen!