PHP - avg von Spalte letzten 12 Monate

goto;

Erfahrenes Mitglied
Hallo zusammen,

ich möchte aus einer MySQL-Tabelle den Mittelwert einer Spalte berechnen. Dies soll jeweil für einen Monat, jedoch maximal 12 Monate in die Vergangenheit passieren.

SQL-Tabelle (vereinfacht):
vID # vTime (Timestamp) # vGrade (hier Mittelwert)


Ich habe 3 verschiedene Ansätze für diese Lösung, bin mir bei der Sinnhaftigkeit aber noch nicht ganz sicher.

Was soll passieren:
Es soll aus der MySQL-Tabellenspalte "vGrade" ein Mittelwert gebildet werden. Der Mittelwert soll direkt im SQL-Query berechnet werden.

Gegeben:
- pro Monat handelt es sich um ca. 5000 bis 8000 Datensätze.



Ansatz Nr.1
- Ich berechne zunächst den aktuellen Monat und werfe diesen in eine for-Schleife, die bei jedem Tick einen Monat abzieht.
- Bei jedem Durchgang wird der berechnete Monatsbeginn und Monatsende in ein SQL-Query gelegt und dort mit "vTime BETWEEN :start AND :end" die betroffenen Datensätze geliefert.
- Ich speichere die results in einem Array zur weiteren Verarbeitung.
- Mein Contra: Ich baue dadurch 12 Datenbankverbindungen auf.


Ansatz Nr.2
- Ich berechne den aktuellen Monat und ziehe von diesem 12 Monate ab.
- Mit diesem Timestamp hole ich alle betroffenen Datensätze aus der Datenbank.
- via foreach durchlaufe ich das gelieferte SQL-Object und prüfe bei jedem Schleifendurchgang, um welchen Monat es sich bei dem Datensatz handelt und weise diesem einem Monatsbasierten Array zu.
- Dieses Array steht dann zur weiteren Bearbeitung bereit.
- Mein Contra: Im besten Fall handelt es sich um ca. 60.000 treffer, bei dem jeder Datensatz eine Timestamp-Validierung durchlaufen muss.

Ansatz Nr.3
- Ich berechne alle notwendigen Timestamps (von / bis) und werfe diese direkt in ein SQL-Query.


Ich tendiere derzeit zu Ansatz Nr.3, möchte aber gern Eure Meinung hören.

Liebe Grüße
 
Hi

2 ist sinnlos.

bei der Geschwindigkeit sollte es zwischen 1 und 3 keine riesigen Unterschiede geben. Persönlich würd ich 1 mit einem PreparedStatement nehmen, einfach um nicht so einen Riesenstring zusammenzubauen, aber das ist Geschmackssache.
 
Zuletzt bearbeitet:
Hi sheel,

danke für Deinen Rat.

Ansatz Nr.3 scheint mir jetzt im nachhinein sehr unsauber und schwer wartbar.

Ich werde Ansatz Nr.1 so umsetzten.

Danke und schönes Wochenende.

Liebe Grüße
 

Neue Beiträge

Zurück