faire une somme par heure,jour,mois...

faire une somme par heure,jour,mois... - SQL/NoSQL - Programmation

Marsh Posté le 17-10-2012 à 08:08:15    

bonjour à tous,
pour mes besoins personels j'ai un appareil qui surveille ma puissance en kw au compteur de la maison et qui enregistre un point par minute dans une table.
 
year, month, day, hour, min, Kw, datetime
2012, 8, 10, 12, 0, 0.235, "2012-08-10 12:00"
2012, 8, 10, 12, 1, 0.255, "2012-08-10 12:01"
2012, 8, 10, 12, 2, 0.335, "2012-08-10 12:02"
....
2012, 8, 10, 12, 59, 0.236, "2012-08-10 12:59"
2012, 8, 10, 13, 0, 0.241, "2012-08-10 13:00"
....
 
j'ai donc 60 points par heure et je cherche a regrouper ces points par heure pour un affichage plus aisé et pour alléger le fichier car je n'ai pas besoin d'une telle précision
donc j’essaie d'obtenir un résultat comme ça :

  • par heure :

2012,8,10,12,0,1.955,"2012-08-10 12:00"
2012,8,10,13,0,3.435,"2012-08-10 13:00"
2012,8,10,14,0,2.265,"2012-08-10 14:00"
 

  • par jour :

2012,8,10,0,0,10.955,"2012-08-10 00:00"
2012,8,11,0,0,30.435,"2012-08-11 00:00"
2012,8,12,0,0,20.265,"2012-08-12 00:00"
...
 
merci de votre aide :)


---------------
Mes ventes vers Grenoble & Gresivaudan
Reply

Marsh Posté le 17-10-2012 à 08:08:15   

Reply

Marsh Posté le 17-10-2012 à 08:58:41    

Si on parle bien de SQL, ca doit donner quelque chose dans ce style:
 

Code :
  1. select year, month, day, hour, sum(Kw)
  2. from nom_table
  3. group by year, month, day, hour
  4. order by year, month, day, hour


 
Tu peux éventuellement filtrer pour avoir un jour précis avec un "where year = xx and month = yy and day = zz"
 
Pour le récapitulatif par jour c'est la meme chose, en retirant tous les "day"

Reply

Marsh Posté le 17-10-2012 à 09:01:37    

Code :
  1. Select Year, month, day, hour, 0 min, SUM(Kw) Kw
  2. From maTable
  3. Group by Year, month, day, hour
  4. Order by Year, month, day, hour


 
Si tu veux faire un group par jour tu fais la meme chose en enlevant "hour".
 
J'ai pas mis la colonne datetime parceque c'est plus du chipotage particulier a ton SGBD qu'un probleme de group :)
 
Edit: Burned


Message édité par Oliiii le 17-10-2012 à 09:02:30
Reply

Marsh Posté le 17-10-2012 à 09:13:13    

Bonjour !
 
A priori, une requête du genre  
 

select year, month, day, hour, 0, sum(Kw), TO_CHAR(year) || '-' || TO_CHAR(month, '99') || '-' || TO_CHAR(day, '99') || ' ' ||  TO_CHAR(hour, '99') || ':00'  from table group by year, month, day, hour;


devrait marcher pour la première requête et, de la même façon,  
 

select year, month, day, 0, 0, sum(Kw), TO_CHAR(year) || '-' || TO_CHAR(month, '99') || '-' || TO_CHAR(day, '99') || ' 00:00'  from table group by year, month, day;


Notes :  
   * Certaines fonctions sont peut-être spécifiques à Oracle, comme le || pour concaténer deux chaînes ...
   * Je n'ai pas de Bd sous la main pour tester, donc les erreurs de syntaxe sont probables, mais l'idée est là !!!
 
Bonne continuation !
 

Reply

Marsh Posté le 17-10-2012 à 09:56:23    

yes! super ça marche merci à vous.


---------------
Mes ventes vers Grenoble & Gresivaudan
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed