kuno: dividieren

Habe eine mySQl Datenbank.

Folgendes will ich realisieren:

  
SELECT COUNT(votes.id) AS anzahl_bewertungen, SUM(votes.vote) AS punkte FROM ....  

Wie man leicht erkennen kann, handelt es sich um ein Bewertungssystem.
Jetzt möchte ich jedoch gerne die Ausgabe nach dem Bewertungsdurchschnitt sortieren.

Also quasi so (sortieren nach Bewertungsdurchschnitt):

ORDER BY punkte/anzahl_bewertungen DESC

Wie lässt sich diese Division in das Statement einbetten?

  1. Habe eine mySQl Datenbank.

    Folgendes will ich realisieren:

    SELECT COUNT(votes.id) AS anzahl_bewertungen, SUM(votes.vote) AS punkte FROM ....

    
    >   
    > Wie man leicht erkennen kann, handelt es sich um ein Bewertungssystem.  
    > Jetzt möchte ich jedoch gerne die Ausgabe nach dem Bewertungsdurchschnitt sortieren.  
    >   
    > Also quasi so (sortieren nach Bewertungsdurchschnitt):  
    >   
    > ORDER BY punkte/anzahl\_bewertungen DESC  
    >   
    > Wie lässt sich diese Division in das Statement einbetten?  
      
    SELECT COUNT(votes.id) AS anzahl\_bewertungen, SUM(votes.vote) AS punkte, COUNT(votes.id)/SUM(votes.vote) AS durschnitt FROM .... ORDER BY durschnitt [DESC]
    
    1. Darauf bin ich aber auch schon gekommen. Aber wenn es sich irgendwie vermeiden lässt, will ich keine zwei COUNT()'s machen.

      1. Hi,

        vergleiche mal die Ausführungspläne (explain oder so), dann siehst du u.U. dass der Datenbankserver nicht zweil mal "counted" ..

        Ansonsten kanns tu das Select mit sum und count auch als Unterabfrage ausführen ... (Pseudo-SQL)

        SELECT punkte, votes, punkte/votes as durchschnitt
          FROM (SELECT Count(...) as votes, Sum(...) as punkte FROM tabelle) t
          ORDER BY durchschnitt

        Ciao, Frank

        1. kleveres maschinchen