Sortieren

Jede relationale Datenbank bietet die Möglichkeit, Daten in irgendeiner Form zu sortieren. Auch PostgreSQL stellt die entsprechenden Funktionalitäten zur Verfügung und ermöglicht das effiziente Sortieren von Datenbeständen.

Das folgende Beispiel zeigt, wie Daten beispielsweise Nach dem Namen sortiert werden können:

test=# SELECT name FROM t_person WHERE svnr BETWEEN '123456' AND '2345' 
	ORDER BY name;
     name
---------------
 Gaika Huber
 Leo Lechner
 Markus Eisner
(3 rows)

In diesem Fall hat das System die Daten aufsteigend sortiert. Wollen wir hingegen sicherstellen, dass die Daten absteigend sortiert werden, müssen wir das Schlüsselwort DESC hinter den Spaltennamen hängen:

test=# SELECT name FROM t_person WHERE svnr BETWEEN '123456' AND '2345' 
	ORDER BY name DESC;
     name
---------------
 Markus Eisner
 Leo Lechner
 Gaika Huber
(3 rows)

Wie Sie sehen können, hat PostgreSQL die Daten korrekt sortiert. Oft kommt es vor, dass es mehr als ein Sortierkriterium gibt. Wollen wir etwa eine Spalte aufsteigend und eine Spalte absteigend sortieren, können wir wie folgt operieren:

test=# SELECT * FROM t_person WHERE name < 'Leo Lechner' 
	ORDER by name ASC, svnr DESC;
 svnr  |     name
-------+---------------
 24567 | Anton Jelinek
 9876  | Gaika Huber
 2345  | Gaika Huber
 2456  | Josef Fischer
(4 rows)

In diesem Fall haben wir erst nach dem Namen und anschließend nach der Sozialversicherungsnummer sortiert.

In Web Anwendungen gibt es oft die Anforderung, zufällige Datensätze auszuwählen. In der Regel wird eine derartige Aufgabe durch ein Sortierverfahren der besonderen Art gelöst:

test=# SELECT * FROM t_person ORDER BY random() LIMIT 3;
 svnr  |     name
-------+---------------
 24567 | Anton Jelinek
 2456  | Josef Fischer
 2345  | Gaika Huber
(3 rows)

Sortieren wir die Daten nach random() ist sichergestellt, dass jeder Aufruf der Abfrage andere Datensätze liefert. Die Abfrage ist zudem sehr schnell, da jedesmal nur drei Datensätze als Ergebnis retourniert werden. Für die Anzeige von zufällig ausgewählten Produkten auf einer Website ist diese Vorgehensweise somit ideal.


Cybertec Schönig & Schönig GmbH
PostgreSQL support, training, consulting
www.postgresql-support.de