Mittelwert in einer MySQL Datenbank von Stundenwerten?

Könnte es nicht so auch funktionieren? (Sprich über die ID da diese ja auto_increment ist...)
PHP:
$y = $startid
$k=0;
for($i = $y; $i < ($y+96))
{
    for($i = $y; $i < ($y+4); $i++)
    {
    $l=0;
    $sql_query_string = "SELECT Temp FROM tabelle WHERE id = '".$i."'";
    $result = mysql_query($sql_query_string) or die('query fehlgeschlagen');
    $temp[$l] = mysql_fetch_object($result);
    $l++;
    }
    $tempstunde[$k]=($temp[0] + $temp[1] + $temp[2] + $temp[3]) / 4;
    $k++;
}
Ist nur ein Ansatz und hat bestimmt noch Fehler... ;)

mfg Spikaner
 
Zuletzt bearbeitet:
Hi,

hmm, das ist aber schon sehr umständlich. Vor allem sollte man DB-Abfragen innerhalb von Schleifen auf jeden Fall vermeiden. Die Datensätze an sich bekommt er ja schon in gewünschter Reihenfolge mit einer Abfrage. Da muss er doch nur noch in der Schleife nebenbei die Werte kumulieren und immer, wenn die Stunde wechselt, die Mittelwerte berechnen, den gewünschten Balken ausgeben und die Variablen zurücksetzen.

So eine große Sache ist das doch gar nicht... ;)

LG
 
@kuddeldaddeldu

Das hört sich gut an. Cool.
Haste vielleicht einen TiP?

@spikaner
So ähnlich mache ich es in meinem VB-Programm
Dorl lese ich eine csv-Datei ein und dann alle 96 Schritte mache ich den Mittelwert.

Aber wenn nun nur 50 Werte vorhanden sind von einem Tag ist alles verschoben.

Da ist das was kuddeldaddeldu vorschlögt interessant [wenn die Stunde wechselt], also nach der Stunde suchen. Dann passt auch der Bezug.

by
 
Hi,

also soweit habe ich es mal gemacht.
http://www.auto-steuerung.de/wetter/jpgraph/graph/avg_monat_regen.php

Nun muss ich noch die Differenz ausrechnen von Tag zu Tag.

Das ist momentan die Abfrage:

PHP:
$ResultPointer = mysql_query("SELECT SUBSTRING(Datummetric, 1, 20)  Datummetric, $Diagrammvar FROM $Tablegraph WHERE `Jahr` between $data_jahr_start and $data_jahr_ende and `Monat` between $data_monat_start and $data_monat_ende AND `Tag` between $data_tag_start and $data_tag_ende ORDER BY SUBSTRING(Datetime, 1, 20)", 

$DatabasePointer);
$erhoehen = 1;
for($i=0, $datax="", $datay=""; $i<mysql_num_rows($ResultPointer); $i++)
{
   $var1_temp = mysql_fetch_object($ResultPointer);
   $datax[] = $var1_temp->Datummetric;
   //$datay[] = $var1_temp->$Diagrammvar;
   $data_leer[] = "";
   $erhoehen++;
   $datax_avg_temp_1 = $var1_temp->Datummetric;
   
   if ($datax_avg_temp_1 <> $datax_avg_temp_2) 
   { 
   $datax_avg[] = $var1_temp->Datummetric; 
   $datay[] = $var1_temp->$Diagrammvar;
   }
   else 
   {
   //$datax_avg[] = ""; 
   }

   $datax_avg_temp_2 = $datax_avg_temp_1;

}

Ich hoffe das ist Technisch ok.
 
Hi,

so fertig:
http://www.auto-steuerung.de/wetter/jpgraph/graph/aktuell_monat_regen_avg.php

PHP:
//Daten aus der MySQL-Tabelle auslesen
$DatabasePointer = mysql_connect($DatabaseHost, $DatabaseUser, $DatabasePassword);
mysql_select_db($Database, $DatabasePointer);
// Mit Datum
$ResultPointer = mysql_query("SELECT SUBSTRING(Datummetric, 1, 20)  Datummetric, $Diagrammvar FROM $Tablegraph WHERE `Jahr` between $data_jahr_start and $data_jahr_ende and `Monat` between $data_monat_start and $data_monat_ende AND `Tag` between $data_tag_start and $data_tag_ende ORDER BY SUBSTRING(Datetime, 1, 20)", 


$DatabasePointer);
$erhoehen = 1;
$zaehler_1 = 2;
$zaehler_2 = 3;
$zaehler_3 = 1;
$zaehler_4 = 0;
for($i=0, $datax="", $datay=""; $i<mysql_num_rows($ResultPointer); $i++)
{
   $var1_temp = mysql_fetch_object($ResultPointer);
   $datax[] = $var1_temp->Datummetric;
   //$datay[] = $var1_temp->$Diagrammvar;
   $data_leer[] = "";
   $erhoehen++;
   $datax_avg_temp_1 = $var1_temp->Datummetric;
   
   if ($datax_avg_temp_1 <> $datax_avg_temp_2) 
   { 
   
   $datax_avg[] = $var1_temp->Datummetric; 
   $datay[] = $var1_temp->$Diagrammvar; 
   
   
      if($zaehler_4 >= 3){      
      
          $datay_1[$zaehler_3] = $datay[$zaehler_2] - $datay[$zaehler_1];
	      
	      $zaehler_3++;  //neues Array
		  $zaehler_1++;  //voriger Tage
          $zaehler_2++;  //nächster Tag
      }

   $zaehler_4++; // erst ab 3tem Wert beginnen

   }


   $datax_avg_temp_2 = $datax_avg_temp_1;  // vergleich auf Tag ungleich

}

IUch hoffe nur das ist Technisch ok.
Ansonsten vielen Dank für die Hilfe.
 
Zuletzt bearbeitet:
Zurück