2012-04-13 1 views
0

Ich habe eine große Menge von Protokolleinträgen, für die ich eine Analyse durchführen muss. Ich möchte den Zeitunterschied zwischen dem Start und dem vollständigen Eintrag für jeden Satz von Protokollen auswählen. Wie würde ich das machen?MySQL Wie kann ich den Zeitunterschied zwischen zwei Protokolleinträgen über einen Satz auswählen?

Sample Log Set: 

ExecuteTime, Entry, TrackKey 
7.2408730984, Start update, 487996b0608b0006bfbe5501217c76bde879b728 
9.9038851261, Complete update, 487996b0608b0006bfbe5501217c76bde879b728 

Antwort

1

gehe ich davon aus Startzeit minimal ist und die Endzeit ist maximal. Wenn es nicht so ist, wird diese Abfrage falsch

select TrackKey, (MAX(ExecuteTime) - MIN(ExecuteTime)) as time_difference 
FROM table 
WHERE Entry IN('Start update', 'Complete update') 
GROUP BY TrackKey 
0

Ungeprüfte:

SELECT * FROM Table AS t1 LEFT JOIN (SELECT MIN(Sample) AS Min, MAX(Sample) AS Max FROM Table) AS t2 ON t1.TrackKey = t2.TrackKey 

Aktualisiert:

SELECT 
    (t3.End - t2.Start) AS Total 
FROM Table AS t1 
    LEFT JOIN 
    (
     SELECT 
      Sample AS Start 
     FROM 
      Table 
     WHERE 
      Entry = "Start update" 
    ) AS t2 ON t1.TrackKey = t2.TrackKey 
LEFT JOIN 
    (
     SELECT 
      Sample AS End 
     FROM 
      Table 
     WHERE 
      Entry = "Complete update" 
    ) AS t3 ON t1.TrackKey = t3.TrackKey 
Verwandte Themen