PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVG von ausgewählten Rows



J!0X
03-12-2008, 12:38
Hallo,

Ich versuche, den Mittelwert von beliebig vielen Zeilen einer Tabelle zu bilden.
Meine Idee wäre folgende (Syntaktisch nicht korrekt):

SELECT AVG(SELECT wert FROM messwerte WHERE id = 0 LIMIT 0,2) AS `avg`
Leider gibt mir die AVG-Funktion aber nur den Mittelwert aller Rows einer Tabelle, also

SELECT AVG(wert) FROM messwerte WHERE messwertid = 0
Ein angehängtes LIMIT wird ignoriert.
Ich möchte auf jeden Fall die Mittelwerte mit SQL berechnen und nicht mit PHP, weil später eine sehr große Menge an Daten in möglichst kurzer Zeit abgearbeitet werden soll.

Vielen Dank,
J!0X

ContainerDriver
03-12-2008, 14:09
Hallo,

versuch es doch mal mit einem Subselect:


SELECT AVG(*) FROM (SELECT wert FROM messwerte WHERE id = 0 LIMIT 0,2)
.

Gruß, Florian

J!0X
03-12-2008, 14:36
Danke, das hat mir sehr geholfen. :)

ContainerDriver
04-12-2008, 07:36
Okay, war aber noch ein Fehler drin in meinem Select-Statement.

msi
04-12-2008, 10:14
du brauchst auf jeden fall noch ein oder by im subselect,
sonst sit die reihenfolge undefiniert (hattest bisher
nur glück dass immer die richtigen kamen)

jan61
04-12-2008, 23:25
Moin,


du brauchst auf jeden fall noch ein oder by im subselect,
sonst sit die reihenfolge undefiniert (hattest bisher
nur glück dass immer die richtigen kamen)

wollte ich gestern schon fragen - was mich aber noch mehr interessiert: Wozu braucht man so eine Abfrage? Ein Durchschnitt soll doch was aussagen - da muss es doch ein handfestes Kriterium geben (eine Zeitspanne, einen Temperaturbereich, ...) - oder nicht???

Jan

msi
06-12-2008, 09:39
Moin,



wollte ich gestern schon fragen - was mich aber noch mehr interessiert: Wozu braucht man so eine Abfrage? Ein Durchschnitt soll doch was aussagen - da muss es doch ein handfestes Kriterium geben (eine Zeitspanne, einen Temperaturbereich, ...) - oder nicht???

Jan

wenn alle X Zeiteinheiten ein neuer Wert eingetragen wrid kann man
so den Durchschnitt der letzten Y Werte ermitteln udn ich denke genau
soll erfüllt werden.