sql >> Databasteknik >  >> RDS >> Mysql

mysql-fråga för att sammanfoga 3 frågor i 1 tabell samtidigt som medelvärdet beräknas

Hour() verkar vara en användbar funktion för detta, eftersom du bara tittar på en enda dag. Kanske något liknande det här skulle fungera för dig:

SELECT * FROM
 (SELECT HOUR(time) hour, avg(ph) AS avg_ph
  FROM ph 
  WHERE time >= NOW() - INTERVAL 1 DAY
  GROUP BY hour) p
JOIN 
 (SELECT HOUR(time) hour, avg(temperature) AS avg_temp
  FROM temperature1 
  WHERE time >= NOW() - INTERVAL 1 DAY
  GROUP BY hour) t ON t.hour = p.hour
JOIN 
 (SELECT HOUR(time) hour, avg(solids) AS avg_solids
  FROM solids 
  WHERE time >= NOW() - INTERVAL 1 DAY
  GROUP BY hour) s ON s.hour = p.hour;

Eftersom den använder inre kopplingar gör jag antagandet att det alltid kommer att finnas minst en post i varje tabell för timmen, men det verkar vara ett rimligt antagande.




  1. Konvertering av merge-satsen till MYSQL med en dubblettnyckel

  2. Postgresql extrahera sista raden för varje id

  3. MySQL:summera datumtider utan att räkna överlappande perioder två gånger

  4. Rad för varje datum från startdatum till slutdatum