001
18.04.2011, 19:05 Uhr
0xdeadbeef
Gott (Operator)
|
In PostgreSQL getestet:
Code: |
CREATE TABLE tabelle ( num NUMERIC, val NUMERIC );
INSERT INTO tabelle VALUES ( 1, 10 ); INSERT INTO tabelle VALUES ( 2, 12 ); INSERT INTO tabelle VALUES ( 3, 32 ); INSERT INTO tabelle VALUES ( 4, 67 );
SELECT t1.num, t1.val - t2.val AS diff FROM tabelle AS t1 LEFT JOIN tabelle as t2 ON t1.num = t2.num + 1;
num | diff -----+------ 1 | 2 | 2 3 | 20 4 | 35 (4 Zeilen)
|
In MySQL sollte das prinzipiell genau so gehen. Ich bin nicht sicher, ob MySQL den NUMERIC-Datentyp kennt, aber du willst ja eh andere Typen benutzen.
Wenn Addition der Schlüssel nicht möglich ist oder Lücken bestehen, sollte
Code: |
SELECT DISTINCT ON(t1.num) t1.num, t2.val - t1.val AS diff FROM tabelle AS t1 CROSS JOIN tabelle AS t2 WHERE t2.num > t1.num ORDER BY t1.num, t2.num ASC;
|
funktionieren. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 18.04.2011 um 19:19 Uhr von 0xdeadbeef editiert. |