[MySQL, PHP] Gesamtdifferenz gruppierter Daten

Hallo,

ich habe nochmal eine Frage.
Ich habe eine MySQL Tabelle eigentlich für einen ganz anderen Zweck aufgebaut, wofür ich sie auch ohne Probleme verwenden kann.
Aufbau:
Name (varchar)| Zahl(int) | Uhrzeit (Timestamp)

Nun möchte ich folgendes Realisiere:

Bei welchem Namen tritt die größte Differenz (sowohl positiv als auch negativ) zum vorherigen Datensatz auf?

Viele Namen sind mehrfach in der Tabelle und sollen Gruppiert werden. Bei jedem Eintrag soll der vorherige Eintrag genommen werden und die Differenz der beiden Zahlen genommen werden.
Am Ende möchte ich eine Liste der Namen haben, die die größte Differenz zum vorherigen Eintrag aufweisen.

Ich hoffe ich habe das halbwegs verständlich geschrieben und das es dafür eine relativ einfach Lösung gibt, was ich allerdings nicht glaube.

Wie gesagt die Tabelle gibt es schon länger (1 Jahr), wenn man mir vorher gesagt hätte das die Funktion benötigt wird hätte ich sie anders aufgebaut :wink:

Vielen Dank für eure Ideen / Mühen
IceDragon

hi IceDragon,

hört sich an als hätten wir da ein ähliches problem (s.u. „sortierte ausgabe von gruppen“)

im ersten schritt würde ich ein kreuzpodukt der tabelle anlegen

SELECT A.*,ABS(A.Zahl-B.Zahl) AS dif
FROM tab A
LEFT JOIN tab B
ON (A.Name = B.Name AND A.Uhrzeit > B.Uhrzeit)
ORDER BY (A.Uhrzeit - B.Uhrzeit)

im 2. schritt (das is auch mein prob) nur die kleinsten zeit diferenzen wählen (also aufeinanderfolgende)

SELECT *
FROM (SELECT …) C # hier select von 1.
GROUP BY C.Name,C.Uhrzeit

im 3. schritt dann die dif. berechnen und ausgeben

SELECT *
FROM (SELECT …) D # hier select von 2.
GROUP BY D.Name

muss wohl noch ein wenig verfeinert werden aber is schonmal ein ansatz :wink:

lg Stefan