Exkurs - Funktionen in der Ausgabe

SQL kann auch Funktionen anwenden, um die Werte von Ausgabespalten zu berechnen.

Leider ist die Sprache hier nicht standardisiert, so dass unterschiedliche Datenbanksysteme verschiedene Syntax verwenden können.

Die folgenden einfachen Beispiele beziehen sich auf das freie Datenbanksystem MySQL.

Beispiel 1: Berechnen der Bevölkerungsdichte

In der land-Tabelle sind sowohl die Einwohnerzahl (in Mio.) als auch die Fläche in km2 gespeichert. Damit kann man die Bevölkerungsdichte (in 1000 Einwohner pro km2) berechnen:

SELECT land.Name, land.Einwohner / land.Flaeche * 1000 AS Bevoelkerungsdichte
  FROM land
 ORDER BY Bevoelkerungsdichte DESC

Beachte, dass hier der Aliasname der berechneten Spalte auch in der Sortierung verwendet wird.

Beispiel 2: Anzeige der Breite in Grad

Die Grad-Angabe für die geografische Breite ist in der Datenbank dezimal angegeben. Dabei werden Werte unterhalb des Äquators mit negativem Vorzeichen versehen.

Der folgende SQL-Befehl gibt die Breite (gerundet auf ganze Grad) in der üblichen Form, z.B. 49° N, aus.

SELECT Name, CONCAT( ABS(ROUND(Breite,0)),  '° ',  IF(Breite<0,'S','N') ) AS Breite
  FROM ort

Ergebnis Beispiel 2

Zur Erklärung:

Beispiel 3: Benfordsches Gesetz

Die Mathematiker Simon Newcomb und Frank Benford haben ein mathematisches Gesetz über die Verteilung der Ziffernstrukturen von Zahlen in empirischen Datensätzen herausgefunden. Kurz gefasst besagt es:

In empirischen Daten (etwa die Bevölkerungszahlen) tritt die Zahl 1 häufiger auf als die 9.
Genauer: Je höher die Ziffer, desto seltener tritt sie auf.

Für die Anfangsziffern in Zahlen des Zehnersystems gilt zum Beispiel: Zahlen mit der Anfangsziffer 1 treten etwa 6,5-mal so häufig auf wie solche mit der Anfangsziffer 9. (Quelle: de.wikipedia.org).

Dieses Gesetz kannst man mit einem SQL-Befehl in der terra-Datenbank nachvollziehen:

SELECT LEFT(Einwohner,1) AS Ziffer1, COUNT(*) AS Anzahl
  FROM ort
 GROUP BY Ziffer1
 ORDER BY Anzahl DESC

Interessant ist hier zunächst nur die Funktion LEFT(Einwohner,1) als Beispiel für eine (selbst erklärende) Funktion für Zeichenketten. Den Rest des SQL-Befehls lernst du in späteren Kapiteln kennen.

X

Fehler melden

X

Suche