Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Berechnen Sie Durchschnitt, Varianz und Standardabweichung von zwei Zahlen in zwei verschiedenen Zeilen/Spalten mit SQL / PHP an bestimmten Daten

Ist es so einfach wie das Hinzufügen des Datums in group by . Hier ist eine Syntax, die sowohl in MySQL als auch in SQLite funktionieren sollte, wobei das Datum auf der Endzeit basiert und angenommen wird, dass die Endzeit als datetime gespeichert wird:

SELECT ID, thedate, AVG(diff) AS average,
   AVG(diff*diff) - AVG(diff)*AVG(diff) AS variance,
   SQRT(AVG(diff*diff) - AVG(diff)*AVG(diff)) AS stdev,
   MIN(diff) AS minTime,
   MAX(diff) AS maxTime
FROM (SELECT t1.id, t1.endTimestamp, DATE(endtimestamp) as thedate,
             min(t2.startTimeStamp) - t1.endTimestamp AS diff
      FROM table1 t1 INNER JOIN
           table1 t2
           ON t2.ID = t1.ID AND t2.subject = t1.subject AND
              t2.startTimestamp > t1.startTimestamp  -- consider only later startTimestamps
     WHERE t1.subject = 'entrance'
     GROUP BY t1.id, t1.endTimestamp
    ) AS diffs
GROUP BY ID, thedate

Falls als Zeitstempel gespeichert, siehe Martys Kommentar.