Sortieren nach Klausel in PostgreSQL

Bilal Shahid 15 Februar 2024
  1. PostgreSQL ORDER BY-Klausel
  2. Verwendung der PostgreSQL ORDER BY-Klausel
  3. Codebeispiele, die die Verwendung der PostgreSQL-Klausel ORDER BY demonstrieren
Sortieren nach Klausel in PostgreSQL

Im heutigen Artikel erfahren Sie, wie Sie das Ergebnis einer Tabelle basierend auf den Attributen dieser Tabelle sortieren. Es zeigt auch, wie wir die Klausel ORDER BY verwenden können, um Daten zu sortieren. Beginnen wir damit, diesen Befehl zu verstehen.

PostgreSQL ORDER BY-Klausel

Um es zu verstehen, lassen Sie uns die SELECT-Anweisung besprechen. Wenn wir eine SELECT-Anweisung in eine Abfrage schreiben, liefert sie uns alle Daten basierend auf der Anweisung aus der angegebenen Tabelle.

Diese resultierenden Daten werden ohne eine bestimmte Reihenfolge zurückgegeben. Was tun wir, wenn wir möchten, dass die Daten in einer bestimmten Reihenfolge vorliegen? Wir verwenden den Befehl ORDER BY mit der Anweisung SELECT.

Der Befehl ORDER BY ermöglicht es uns, die Daten basierend auf einem oder mehreren Attributen aus der Tabelle zu sortieren. Wir können mit diesem Satz von Attributen auch in aufsteigender oder absteigender Reihenfolge sortieren.

Nachdem wir den PostgreSQL-Befehl ORDER BY verstanden haben, wollen wir uns seiner Verwendung zuwenden.

Verwendung der PostgreSQL ORDER BY-Klausel

Der Befehl ORDER BY wird zusammen mit dem Rest der Abfrage nach den Anweisungen SELECT und FROM geschrieben. Es gibt ein paar wesentliche Details, die wir wissen müssen, um diesen Befehl zu verwenden.

Entscheiden Sie zunächst, welche Spalte oder Spaltengruppe als unser Parameter zum Sortieren der Ergebnisse verwendet werden soll. Denken Sie daran, dass dies vom Umfang des Problems abhängt, das wir zu lösen versuchen.

Wir werden es später in diesem Artikel anhand von Beispielen erläutern. Das wichtige syntaktische Detail, das Sie sich merken sollten, ist, dass wir ein Komma (``) verwenden, wenn mehrere Attribute als Parameter verwendet werden sollen.

Die Syntax für einzelne Parameter:

ORDER BY column_name;

Die Syntax für mehrere Parameter:

ORDER BY column1_name, column2_name;

Denken Sie daran, wenn mehrere Parameter verwendet werden, prüft die ORDER BY-Klausel zuerst den Datensatz gemäß dem ersten Parameter.

Wenn zwei Werte die genaue Reihenfolge gemäß dem ersten Parameter aufweisen, wird der zweite Parameter verwendet, um diese Ähnlichkeit zu beseitigen und die resultierenden Daten zu sortieren.

Zweitens können wir die resultierenden Daten basierend auf Attributen in aufsteigender oder absteigender Reihenfolge sortieren. Die Schlüsselwörter ASC und DESC definieren, ob aufsteigend oder absteigend sortiert werden soll.

Wenn wir beides nicht angegeben haben, wird standardmäßig aufsteigend sortiert.

Die Syntax zum Sortieren in aufsteigender Reihenfolge:

ORDER BY column1_name ASC;

Die Syntax zum Sortieren in absteigender Reihenfolge:

ORDER BY column1_name DESC;

Die Syntax zum Sortieren in aufsteigender und absteigender Reihenfolge zusammen:

ORDER BY column1_name ASC, column2_name DESC;

Ein weiterer Fall ist schließlich, wenn NULL-Daten in dem Attribut/der Spalte vorhanden sind, die von der ORDER BY-Klausel als Parameter verwendet werden. Wir können angeben, ob die NULL-Werte vor oder nach anderen Werten stehen sollen.

Für diese Operation werden die Schlüsselwörter NULLS LAST und NULLS FIRST verwendet. Wenn die Option ASC verwendet wird, ist standardmäßig NULLS LAST ausgewählt.

Wenn dagegen die Option DESC verwendet wird, ist NULLS FIRST standardmäßig ausgewählt. Wir können es je nach Bedarf ändern, indem wir die Schlüsselwörter hinzufügen.

Die Syntax, um NULL-Werte zuerst zu setzen:

ORDER BY column1_name ASC NULLS FIRST;

Die Syntax zum Setzen von NULL-Werten am Ende:

ORDER BY column1_name DESC NULLS LAST;

Codebeispiele, die die Verwendung der PostgreSQL-Klausel ORDER BY demonstrieren

Zur Veranschaulichung durch Beispiele erstellen wir zunächst eine Tabelle wie folgt:

create table Orders(
    id int,
    name varchar(30) not null,
    OrderAmount int not null,
    constraint pk_customer primary key (id)
);

insert into Orders 
values
(1,'Ben', 250),
(2, 'James', 350),
(3, 'Carl', 550),
(4, 'Adam', 550);

select * from Orders;

Ausgang:

order by-Klausel in postgresql - Tabelle erstellen

Nachdem die Tabelle erstellt wurde, zeigen wir alle Möglichkeiten (oben besprochen) zur Verwendung des Befehls ORDER BY.

PostgreSQL-Befehl ORDER BY mit einem Ausdruck

Der folgende Code zeigt die Namen der Kunden und ihre Gesamtausgaben aus der Tabelle Bestellungen sortiert nach dem Preis der Bestellungen an:

für aufsteigende Reihenfolge von OrderAmount

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount ASC;

Ausgang:

order by Klausel in postgresql - Sortierung nach Preis in aufsteigender Reihenfolge

für absteigende Reihenfolge von OrderAmount

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC;

Ausgang:

order by Klausel in postgresql - Sortierung nach Preis in absteigender Reihenfolge

PostgreSQL-Befehl ORDER BY mit mehreren Ausdrücken

Der folgende Code zeigt die Kundennamen und deren Gesamtausgaben aus der Tabelle Bestellungen, sortiert nach Preis und Kundenname der Bestellungen.

In aufsteigender Reihenfolge sortieren

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount, name;

Ausgang:

order by Klausel in postgresql - sortiert nach Preis und Kundenname in aufsteigender Reihenfolge

In absteigender Reihenfolge sortieren

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC, name DESC;

Ausgang:

order by Klausel in postgresql - sortiert nach Preis und Kundenname in absteigender Reihenfolge

Sowohl aufsteigend als auch absteigend

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC, name ASC;

Ausgang:

order by Klausel in postgresql - sortiert nach Preis und Kundenname in aufsteigender und absteigender Reihenfolge

PostgreSQL-Befehl ORDER BY mit NULL-Attributwerten

Für dieses unten angegebene Beispiel verwenden wir eine neue Tabelle mit null-Werten.

create table NULLTEST(
    name varchar(30) not null,
    number_ int
);

insert into NULLTEST
values 
('Jack', 250),
('Maguire', 350),
('Walker', 550),
('Michael', NULL);

select * from NULLTEST;

Ausgang:

order by-Klausel in postgresql - order by-Befehl mit Nullattributen

Der folgende Code zeigt name und number_ sortiert nach den Werten in der Spalte number_ mit allen NULL-Werten zuerst an.

SELECT name, number_
FROM NULLTEST
ORDER BY number_ ASC NULLS FIRST;

Ausgang:

order by-Klausel in postgresql - zuerst mit Nullwerten sortieren

Die Verwendung von NULL FIRST mit der absteigenden Sortierungsoption ORDER BY ist unnötig, da in diesem Fall standardmäßig ein NULL-Wert zuerst erscheint. Der folgende Code zeigt name und number_ sortiert nach den Werten in der Spalte number_ mit allen NULL-Werten an.

SELECT name, number_
FROM NULLTEST
ORDER BY number_ DESC NULLS LAST;

order by-Klausel in postgresql - zuletzt mit Nullwerten sortieren

Hier ist die Verwendung von NULLS LAST mit der aufsteigenden Sortieroption ORDER BY unnötig, da in diesem Fall standardmäßig ein NULL-Wert zuletzt erscheint.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub