AVG von zwei Zeilen
forget it - not important
- datenbank
Meine Tabelle sieht folgendermaßen aus:
ID Tag Nummer
1 1 1
1 2 3
2 1 2
2 2 1
3 1 3
3 2 2
Jetzt will ich per AVG den Durchschnitt von jeder ID über beide Tage berechnen.
So müsste ich folgendes herausbekommen:
ID AVG
1 2,00
2 2,00
3 2,50
Ich habe mehrere Sachen probiert, aber finde einfach nicht das richtige. Wenn ich
SELECT AVG(Nummer) AS average FROM tabelle GROUP BY AVG(Nummer) ORDER BY Nummer ASC;
mache, kommt
2 1,0000
3 3,0000
3 3,0000
heraus. Hier fehlt sogar 1 komplett.
Hat jemand eine Idee, woran es liegen könnte?
Meine Tabelle sieht folgendermaßen aus:
ID Tag Nummer
1 1 1
1 2 3
2 1 2
2 2 1
3 1 3
3 2 2Jetzt will ich per AVG den Durchschnitt von jeder ID über beide Tage berechnen.
So müsste ich folgendes herausbekommen:
ID AVG
1 2,00
2 2,00
3 2,50
Durchschnitt von jeder ID ist immer gleich ID.
Durchschnitt der IDs über beide Tage (oder was auch immer) ist immer ein einziger Wert.
Deine Fragestellung ist falsch/mißverständlich.
PS:
Wenn Du meinst es müßte
ID AVG
1 2,00
2 >1,50<
3 2,50
rauskommen, meinst Du vielleicht Durchschnitt von Nummer je ID?!
PS:
Wenn Du meinst es müßte
ID AVG
1 2,00
2 >1,50<
3 2,50
rauskommen, meinst Du vielleicht Durchschnitt von Nummer je ID?!
Stimmt, hatte mich vertan. Kopfrechnen von zwei Zahlen; Oje, peinlich ;)
Von jeder ID möchte ich den Durchscnitt von Nummer haben über beide Tage, richtig.
Hi,
Von jeder ID möchte ich den Durchscnitt von Nummer haben über beide Tage, richtig.
Dann ist also die ID das, wonach du gruppieren moechtest.
Wie in deinem Beispiel nach AVG() gruppieren zu wollen, ist totaler Nonsense.
Wenn es noch Daten zu anderen Tagen gibt, die nicht in die Berechnung des Durchschnittswertes einfliessen sollen, dann schliesse diese Tage aus der Auswahl aus.
MfG ChrisB
Nein es gibt nur Tag 1 und 2.
Ich habe in einem Tutorial online gefunden, dass nach AVG() gruppiert worden ist. Vielleicht sollte man dann denen sagen, dass es Nonsense ist.
Wenn ich den Durchschnitt von ID berechnen würde, würde ich ja die Durschschnittsanzahl aller IDs bekommen. Das ist ja nicht das, was ich will.
Vielleicht eine Idee für die Abfrage?
yo,
Ich habe in einem Tutorial online gefunden, dass nach AVG() gruppiert worden ist. Vielleicht sollte man dann denen sagen, dass es Nonsense ist.
sehr unwahrscheinlich, zeig doch mal den link oder deren quell-anweisung dazu.
Wenn ich den Durchschnitt von ID berechnen würde, würde ich ja die Durschschnittsanzahl aller IDs bekommen. Das ist ja nicht das, was ich will.
lesen, was Chris dir vorgeschlagen hat, du gruppierst über die ID's und bildest den durschnitt von numbers. merke worüber du gruppierst ist nicht die spalte, worüber du dann auch aggregatfunktionen einsetzt.
SELECT id, AVG(Nummer) Durschnitt
FROM tabelle
GROUP BY id
ORDER BY AVG(Nummer)
;
Ilja
hi,
danke, es klappt.
Ich habe den Link gesucht, aber leider nicht wieder gefunden. Wahrscheinlich war es dann von jemand anderem auch falsch gemacht worden, oder ich hatte es falsch verstanden.
Von jeder ID möchte ich den Durchscnitt von Nummer haben über beide Tage, richtig.
Du möchtest also den den Durchschnitt der Nummern mit der gleichen ID bilden und die Tage sind belanglos*. Die fertige Abfrage hast Du ja nun schon bekommen.
* "über beide Tage", "es gibt nur Tag 1 und 2"