sql >> Databáze >  >> RDS >> Mysql

Vypočítejte průměr, rozptyl a směrodatnou odchylku dvou čísel ve dvou různých řádcích/sloupcích pomocí SQL / PHP ke konkrétním datům

Je to tak snadné jako přidání data do group by . Zde je syntaxe, která by měla fungovat v MySQL i SQLite, přičemž datum je založeno na čase konce a za předpokladu, že čas ukončení je uložen jako datum a čas:

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

Pokud je uložen jako časové razítko, viz Martyho komentář.




  1. PHP nenačítá php_pgsql.dll v systému Windows

  2. Nejlepší způsob, jak uložit zakódovanou hodnotu base64 do databáze MySQL?

  3. Přiřaďte hodnotu databáze MySQL proměnné PHP

  4. Jak spojit dvě tabulky v MySQL