mixmastertobsi: MySQL AVG und COUNT kombinieren

Hallo, ich versuche mich an einer MySQL Abfrage, bei der ich mir den Durchschnitt errechnen lasse und anschließend noch die Anzahl der Zeilen ausgeben möchte, die zur Berechnung des Durchschnitts verwendet wurden.

so etwa
4.5 | 23

SELECT AVG(wertung), COUNT(*) FROM bewertung

Leider funktioniert das aber bei mir nicht wie gewünscht. In zwei getrennten Abfragen bekomme ich es problemlos gelöst.

  1. Hallo,

    SELECT AVG(wertung), COUNT(*) FROM bewertung

    Nimm für die Zeilenanzahl doch einfach mysq_num_rows() wenn du mit PHP unterwegs bist.

    Dann kannst du die COUNT-Geschichte aus dem Query weglassen.

    Gruß
    Alex

    1. Hi!

      SELECT AVG(wertung), COUNT(*) FROM bewertung
      Nimm für die Zeilenanzahl doch einfach mysq_num_rows() wenn du mit PHP unterwegs bist.

      Das Ergebnis ist dann vorhersagbar immer 1. Nein, so geht das nicht, wenn man mit Aggregatfunktionen die Ergebnismenge zusammenschrumpft. Die unterschiedlichen Ergebnisse können von der Verwendung von einmal dem Spaltennamen und einem dem * herrühren, wenn in der Spalten NULL-Werte enthalten sind. Ein COUNT(*) zählt diese mit, COUNT(wertung) würde sie ignorieren.

      Lo!