sql >> Database >  >> RDS >> Mysql

Bereken het gemiddelde, de variantie en de standaarddeviatie van twee getallen in twee verschillende rijen/kolommen met sql / PHP op specifieke datums

Is het net zo eenvoudig als het toevoegen van de datum aan de group by . Hier is een syntaxis die zou moeten werken in zowel MySQL als SQLite, waarbij de datum wordt gebaseerd op de eindtijd en ervan uitgaat dat de eindtijd wordt opgeslagen als een datetime:

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

Indien opgeslagen als een tijdstempel, zie Marty's opmerking.




  1. Een getal opmaken als een percentage in MySQL

  2. Android - Cursor opMapReady (markeringen)

  3. MySQL-GROEP OP NULL en LEEG

  4. Windows PSQL-opdrachtregel:is er een manier om wachtwoordloos inloggen toe te staan?