X-Y - Daten zu einem Sprungdiagramm ergänzen - ein kleines Beispiel für angewandtes SQL
Ihnen liegen Daten in Form von X-Y-Werten vor. Die X-Werte sind sortiert, es handelt sich bsp. um
eine Zeitachse oder um die Häufigkeitsverteilung von Werten zwischen
0 und 100. Sie benötigen ein Sprungdiagramm, so daß nicht die einzelnen Punkte angezeigt und durch
Verbindungen extrapoliert werden, sondern daß eine auf- und absteigende Treppe erzeugt wird.
Beispiel: Ihre bisheriges Ergebnis erzeugt das folgende Diagramm:
Als Ergebnis wünschen Sie jedoch
Wie Sie der Datenreihe entnehmen können, gelingt dies, indem neue X/Y-Kombinationen eingefügt werden.
Es wird zu einem Punkt A(x1, y1) der Punkt B(x2, y2) mit dem nächstgrößeren X-Wert gesucht und ein
neuer Punkt C(x2, y1) eingefügt, der als X-Wert den Wert des zweiten Punktes, als Y-Wert den Wert
des ersten Punktes erhält. Die Punkte müssen dann der Reihe nach so gezeichnet werden, daß der eingefügte
Punkt immer zwischen den Originalpunkten gezeichnet wird.
Lösung für das Sprungdiagramm
Sie können dieses Problem folgendermaßen lösen. Die Daten erstellen Sie direkt in einer Sql-fähigen
Datenbank oder importieren sie von der Originalstelle in eine Datenbank. Die Tabelle mag Rohdaten,
die beiden Spalten mögen X und Y heißen. Nun erstellen Sie eine Sql-Abfrage mit dem folgenden Code:
SELECT B.X AS X_New,
A.Y AS A_New,
1 AS OrderCol
FROM Rohdaten As A INNER JOIN Rohdaten AS B
ON A.X < B.X
WHERE B.X = (SELECT MIN(C.X) FROM Rohdaten AS C WHERE C.X > A.X)
UNION
SELECT A.X, A.Y, 2
FROM Rohdaten AS A
ORDER BY X_New, OrderCol
Erklärung zum Sql-Code
Die erste Select-Anweisung bildet eine Selbstverknüpfung der Tabelle 'Rohdaten' mit sich selbst,
wobei zu jeder Zeile von A alle Zeilen mit hinzugenommen werden, bei denen der X-Wert größer ist.
Aus dieser Menge werden jene Zeilen ausgewählt, bei welchen der größere X-Wert gleich dem Minimum
all dieser größeren X-Werte ist - dies ist genau die X-Koordinate des nächsten Punktes. Von diesen
Tupeln wird die X-Koordinate des zweiten und die Y-Koordinate des ersten Wertes genommen und um einen
Wert 1 in der Spalte OrderCol ergänzt. Dieser vermerkt, daß es sich um einen berechneten Wert handelt.
Die zweite Abfrage sammelt einfach die Originaldaten, ergänzt um einen Spaltenwert 2. Damit wird
angezeigt, daß es sich um die Originaldaten handelt.
Beide Ergebnisse werden mittels des UNION - Operators miteinander verknüpft und zunächst nach den
X-Koordinaten sortiert. Bei den gleichen X-Werten wäre es jedoch zufällig, ob die Reihenfolge korrekt ist.
Deshalb wird über die nur wegen diesem Sortierungsproblem eingefügten Spalte OrderCol zusätzlich sortiert,
so daß die berechneten Werte bei gleicher X-Koordinate zuerst erscheinen.

Link zur hiesigen Seite als QR-Code
Kontaktformular:
Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!
© 2003-2025 Jürgen Auer, Berlin.