Partage
  • Partager sur Facebook
  • Partager sur Twitter

plus longue période sans précipitation

Sujet résolu
    14 août 2020 à 10:06:43

    Bonjour

    j'éssais de trouver une requête depuis quelques jours mais je ne sais vraiment pas comment m'y prendre.

    j'ai une table avec une ligne qui se rajoute automatiquement toutes les 5 minutes, sur cette table il y a un champ "timestamp" et un autre "mesure" pour les précipitations.  sans pluie la mesure affiche 0, dés qu'il pleut j'ai une valeur qui est au minimum 0.2. 

    ce que j'éssais de trouver c'est la plus longue période sans pluie (c'est a dire qu'avec des 0) et de récupérer la date de départ et de fin de cette même période.

    si quelqu'un a une idée ?  

    • Partager sur Facebook
    • Partager sur Twitter
      24 août 2020 à 16:43:28

      Bonjour,

      A première vue, et avec mon expérience ceci ne peut être fait directement en SQL, en tout cas pas en une seule requête.

      Je pense que le plus simple est de travailler ici côté applicatif ( PHP ? ) en récupérant les données ordonnées chronologiquement et en les parcourant à la recherche des 0 consécutifs.

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        24 août 2020 à 17:29:51

        J'ai trouvé quelqu'un qui a réussi quelque chose dans le même genre. Si tu as un bon niveau en SQL, tu peux jeter un oeil : https://stackoverflow.com/questions/1315262/sql-finding-longest-date-gap

        Mais je suis d'accord avec @Benzouye, le moyen le plus simple est d'écrire un petit programme qui te trouvera la plus grande intervalle.

        • Partager sur Facebook
        • Partager sur Twitter
          2 septembre 2020 à 10:41:48

          Désolé de ne répondre que maintenant La requête ne vient pas de moi car beaucoup trop compliqué :) mais si cela peut servir a quelqu'un voici la solution : 

          $requete = "SELECT * FROM noaa_jour ORDER By AMJ";
              $resultat = mysqli_query($connexion,$requete);
              if ($resultat)
                  {
                  //echo "OK";
                  $nb=0 ;
                  while($jour = mysqli_fetch_object ($resultat))
                      { 
                      $nb++;
                      $AMJ[$nb] =$jour->AMJ;
                      $Pluie[$nb]=$jour->Pluie;
                      }
                  $i=0;
                  $numperiode = 0; 
                
                  while ($i<$nb)
                        {
                        $i++;
                      
                        if ($Pluie[$i]<1)
                            {
                            $numperiode++;
                            $TabDateDebPeriode[$numperiode]=$AMJ[$i];
                            $TabNbJourPeriode[$numperiode]=1;
                            $TabCumulPeriode[$numperiode]=$Pluie[$i];
                            $i++;
                            while (($Pluie[$i]<1) and ($i<=$nb))
                                  {
                                  $TabCumulPeriode[$numperiode]= $TabCumulPeriode[$numperiode]+$Pluie[$i];
                                  $TabNbJourPeriode[$numperiode]++;
                                  $i++;
                                   //echo $i.'  <br />';
                                  }
                            }
                        
                        }
                  
                    for ($j=1;$j<=$numperiode;$j++)
                        {
                        
                        $TabPeriodesJour[$TabDateDebPeriode[$j]]=$TabNbJourPeriode[$j];
                        $TabPeriodesCumul[$TabDateDebPeriode[$j]]=$TabCumulPeriode[$j];
                        }
                        
                  $NbJoursPeriode= 10;     // à modifier à la demande 
                  arsort($TabPeriodesJour);
                  $k=0;
                  for (reset($TabPeriodesJour); $cle=key($TabPeriodesJour);next($TabPeriodesJour))
                        {
                        $k++;
                        if ($k<= $NbJoursPeriode)
                            {
                            echo $cle. ' '.$TabPeriodesJour[$cle].' '.$TabPeriodesCumul[$cle] , ' <br />';
                            }
                        }

          visible ici : https://www.meteo-canejan.fr/records.php 

          • Partager sur Facebook
          • Partager sur Twitter

          plus longue période sans précipitation

          × 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