[php|mysql] Durchschnittswert einer Spalte (ohne dupli)?
Verfasst: 24.07.2010 20:23
Hi
ich hab mal wieder ein kleines Datenbankausleseproblem. Ich habe 2 relevante Spalten:
ID | Note
ID ist nicht unique und kommt demnach mehrfach vor - aber IMMER mit der gleichen Note.
ID | Note
1 | 10
1 | 10
2 | 9
3 | 8
1 | 10
4 | 5
Ich möchte jetzt folgendes per php rausbekommen: Wie ist die Durchschnittsnote ohne das doppelte IDs berücksichtigt werden. Also (10 + 9 + 8 + 5) / 4 = 8
Das will mir net so gelinge
Ich muss hier wohl mit distinct arbeiten - das setze ich auf ID an.
Mit ...
(id != ... id ist INT und da steht sonst NULL wenn es noch keine ID gibt; so filter ich die NULLer raus)
... bekomme ich zumindest schonmal angezeigt welche ID welche Note hat, ohne das doppelte IDs berücksichtigt werden:
ID | Note
1 | 10
2 | 9
3 | 8
4 | 5
Mit
bekomme ich raus wieviele relevanten Treffer ich habe:
treffer
4
Jetzt müsste ich diese beiden verknüpfen und kann per php teilen.
Treffer | Note
4 | 32
per php lese ich beide Werte aus ... 32/4 = 8 - fertig
(wie ich auf die 8 komme ist mir letzendlich egal - wenn ich die direkt aus sql rausbekomme - auch gut
)
Aber das will nicht so recht
Hab schon mal mit sum/avg versucht zu arbeiten - aber da bekomme ich kein distinct eingebaut. Er berechnet mit die Summe/Schnitt ALLER Noten
Hat da jemand eine Idee?
Gruß
ich hab mal wieder ein kleines Datenbankausleseproblem. Ich habe 2 relevante Spalten:
ID | Note
ID ist nicht unique und kommt demnach mehrfach vor - aber IMMER mit der gleichen Note.
ID | Note
1 | 10
1 | 10
2 | 9
3 | 8
1 | 10
4 | 5
Ich möchte jetzt folgendes per php rausbekommen: Wie ist die Durchschnittsnote ohne das doppelte IDs berücksichtigt werden. Also (10 + 9 + 8 + 5) / 4 = 8
Das will mir net so gelinge

Ich muss hier wohl mit distinct arbeiten - das setze ich auf ID an.
Mit ...
Code: Alles auswählen
SELECT distinct id, `note` FROM `test` where id != ''
... bekomme ich zumindest schonmal angezeigt welche ID welche Note hat, ohne das doppelte IDs berücksichtigt werden:
ID | Note
1 | 10
2 | 9
3 | 8
4 | 5
Mit
Code: Alles auswählen
SELECT count(distinct id, note) as treffer FROM `test` where id != ''
treffer
4
Jetzt müsste ich diese beiden verknüpfen und kann per php teilen.
Treffer | Note
4 | 32
per php lese ich beide Werte aus ... 32/4 = 8 - fertig


Aber das will nicht so recht

Hab schon mal mit sum/avg versucht zu arbeiten - aber da bekomme ich kein distinct eingebaut. Er berechnet mit die Summe/Schnitt ALLER Noten

Hat da jemand eine Idee?
Gruß