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
 
Zurück