Partage
  • Partager sur Facebook
  • Partager sur Twitter

Différences de relevé entre deux dates

    14 décembre 2011 à 23:49:43

    Bonsoir à tous!

    Cela fait bien longtemps que je ne suis plus venu fréquenter ce forum ^^ Le fait est que je suis aujourd'hui face à un problème de taille, je me tourne donc vers des plus savants que moi...

    Le problème est le suivant:

    Je dispose d'une table SQL 'formulaires' dans laquelle il y a un champs date au format Y-M-d H-m-s , un champ relevejour et un champ relevenuit.

    J'aimerais pour chaque mois effectuer la moyenne des différences de compteur entre deux date.

    Imaginons

    Date | relevejour | relevenuit

    2011-12-06 | 5465464 | 7898
    2011-12-12 | 6765484 | 9898
    2011-12-18 | 8915467 | 10898
    2011-12-29 | 9965454 | 11898

    Je voudrais créer une requête SQL permettant de calculer chaque différence de compteur entre deux dates, divisée par le nombre de jours qui les sépare. Puis de calculer la moyenne de ces différences. Je sèche!

    Si une bonne âme pouvait m'aider j'avoue que je serait très reconnaissant!

    Merci de m'avoir lu!
    • Partager sur Facebook
    • Partager sur Twitter
      15 décembre 2011 à 9:42:23

      Ce ne serait pas plus simple de calculer la consommation mensuelle ?
      • Partager sur Facebook
      • Partager sur Twitter
        15 décembre 2011 à 16:04:58

        Merci déjà de ta réponse :-)

        Plus simple oui, plus précis pas forcément... Les personnes encodent 2 à 5 relevés par mois. Si je calcule la conso moyenne ce ne sera pas très représentatif car il peut y avoir deux relevés espacés de 3 jours, puis 8 jours avant le suivant, etc. Soustraire la première conso de la dernière serait donc moins représentatif que de diviser chaque différence de deux relevés par le nombre de jours qui les sépare.

        En fait au final je souhaiterais effectuer la moyenne des Conso2-Conso1, Conso3-Conso2 etc divisées par le nombre de jours qui les sépare. Ensuite je multiplie par 365... les données représenteraient donc "ma conso annuelle si j'avais consommé autant que ce mois là".

        j'ai peu de pas être très clair... :'/
        • Partager sur Facebook
        • Partager sur Twitter
          15 décembre 2011 à 17:22:21


          Imagine que le mec fait une rave party le 2 janvier, il consomme à mort à cause de la sono. Le reste du mois, il bouffe des nouilles froides.

          date    relevé   Différence
          01/01      100
          03/01    10000         9900
          30/01    10002            2


          La moyenne des différences est pas du tout la même que la conso moyenne sur le mois...

          Il vaudrait mieux prendre les 2 relevés les plus éloignés dans le mois (ou le plus récent et un ayant quelques semaines d'ancienneté), en fait.
          • Partager sur Facebook
          • Partager sur Twitter
            15 décembre 2011 à 18:14:18

            MDR... j'imagine mes petits vieux faire une RAVE... bonheur entre deux lignes de code!!! Merci...

            J'ai malheureusement pour consigne de prendre la moyenne des différences... C'est là que je coince... :(

            Comment sélectionner une date et la suivante pour les soustraire ?

            date relevé Différence Différence / nbre de jours
            01/01 100
            03/01 10000 9900 4950
            30/01 10002 2 0.00001 ??? lol

            Ensuite je dois faire (4950 + 0.00001) / 30 * 365...



            J'ai fait le test avec la requête suivante:
            SELECT MONTHNAME(date) AS mois, ((MAX(relevejour)-MIN(relevejour))/30.5) * 365 AS releve FROM formulaires WHERE user_id=80 GROUP by mois

            J'obtiens une différence de 1200 kw/h par rapport à la moyenne des différences... je soupçonne que l'erreur vienne du GROUP BY... En fait j'utilise un logiciel de graphiques (plotalot) qui m'oblige à utiliser MONTHNAME pour représenter chaque mois en abscisses de mon graphique. Sans doute qu'une autre requête arrangerait le problème...
            • Partager sur Facebook
            • Partager sur Twitter
              16 décembre 2011 à 9:59:01

              > Comment sélectionner une date et la suivante pour les soustraire ?

              Normalement, tu utiliserais une fonction de fenêtrage style LAG() qui te permet de choper la ligne d'avant ou celle d'après suivant un certain ordre :

              http://www.postgresql.org/docs/8.4/sta [...] s-window.html

              Mais je parie qu'en plus, tu es sous mysql donc il te faudra utiliser un artifice du genre :

              SELECT date,releve,@ancienne_date,@ancien_releve,@ancien_releve=releve,@ancienne_date=date FROM
              (SELECT date,releve FROM machin WHERE client_id=... ORDER BY date)
              
              • Partager sur Facebook
              • Partager sur Twitter

              Différences de relevé entre deux dates

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown