2016-06-15 1 views
0

j'ai une table appelée données avec des colonnes:MySQL Température moyenne en spécifiant le nombre de jours

  • Date [timestamp]
  • température [int (11)]
  • humidité [int (11)]

(par exemple ... Date: 11/06/2016 10:07:22, température: 22, humidité: 50)

je reçois une nouvelle entrée toutes les 60 secondes.

Je me demande s'il est possible de définir une requête qui retournera la température moyenne et l'humidité de chaque heure pendant un nombre de jours spécifié. J'ai besoin de l'heure moyenne pour hier (1 jour), la semaine dernière (7 derniers jours) et le mois dernier (30 derniers jours).

+1

Cette requête sera très lent dans tous les cas ... Mais ce sera quelque chose comme: 'SELECT AVG (température), DATE (date), l'heure (date) à partir de données GROUP BY DATE (date), HOUR (date) ' – Marki555

+0

C'est exactement ce que je cherchais ... Quand vous arrivez à le voir, les choses ont du sens, mais je ne pouvais pas le comprendre !! – from

+0

Si cette réponse vous convient, veuillez la marquer comme acceptée. – Marki555

Répondre

0

Pour obtenir une valeur moyenne par heure, nous devons GROUP BY les lignes par jour + heure.

Exemple de requête:

SELECT AVG(temperature), DATE(date), HOUR(date) FROM data GROUP BY DATE(date), HOUR(date) 
+0

Basé sur Marki555 répondre c'est ce que j'ai finalement fait: SELECT AVG (température) 'avgtemp', AVG (humidité)' avghum', DATE (date) 'jour', HOUR (date)' hour' FROM données WHERE date> = maintenant() - INTERVALLE 7 JOURS GROUPE PAR jour, heure ORDER BY date DESC; MERCI !!! – from

+0

... Je me demandais simplement si c'est facile de changer la requête pour faire la même moyenne, mais pour toutes les 6-12 heures .... quand je dessine un mois entier d'info dans un tableau, il semble vraiment bouché – from

+0

Oui, vous avez juste besoin pour spécifier simplement quelles lignes seront "repliées" (groupées) en une ... par exemple 'FLOOR (HEURE (date)/12)' le fera toutes les 12 heures (les 12 premières heures sortiront 0, les 12 heures restantes sortiront 1). – Marki555