Bonjour à tous,
dans le cadre d'un projet en interne dans ma société, je souhaite récupérer des valeurs enregistrées dans une base SQL et pouvoir les afficher lissé sur une minute dans un intervalle de temps défini par un exploitant.
Je m'explique, j'enregistre des valeurs de capteurs dans ma BDD, par exemple un débitmètre. Les enregistrements sont rapide. Voici un exemple:
Explication des colonnes:
- TS=timeStamp
- Name= le nom du capteur
- Value= la valeur du capteur
Alors les enregistrements aussi rapide sont utile dans mon cas d'un point de vu process (donc pas question de modifier le temps d'échantillonage) , mais dans le cadre d'une exploitation de données celà ne me conviens pas. J'aimerais exploiter et afficher les valeurs de façon suivante:
- Afficher les valeurs toutes les minutes
- Les valeurs de chaque minute correspondent à la moyenne sur la minute
- L'utilisateur doit pouvoir choisir une plage d'exploitation (sur un jour, un poste, une semaine etc etc)
Pour celà, en requête SQL, la fonction "AVG" me semble pertinente mais comment dire en SQL:
- Fais moi la moyenne des valeurs "nom du capteur" sur la plage "début temps" à "fin temps" en prenant en compte que les valeurs moyennée sur la minute?
J'avais pensé à faire une requête du style:
Sauf que cela ne fonctionne pas... Il faut dire que les BDD, je n'ai pas touché depuis plus de 10a, et j'aimerais beaucoup me replonger dedans, mais actuellement je sèche un peu, même si je pense que la solution est simple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT "TS", AVG(Value) FROM "table_capteur" GROUPE BY MINUTE (TS)
Je vous remercie![]()







Répondre avec citation
Partager