2009-08-06 13 views
1
SELECT username, (SUM(rating)/count(*)) as TheAverage, count(*) as TheCount 
FROM ratings 
WHERE month ='Aug' AND TheCount > 1 
GROUP BY username 
ORDER BY TheAverage DESC, TheCount DESC 

私はそれが本当に近いと思っていますが、「TheCount」はWHERE句とORDER句には存在しません。MySQLクエリのヘルプ

ID、ユーザ名、評価、月

そして、私はその後、平均格付けおよび評価の数で結果を注文する各ユーザーの平均評価をうまくしようとしています:

テーブルです。

助けてください。

答えて

1

あなたのグループとあなたが持つ必要がある、数える場合:

SELECT username, (SUM(rating)/COUNT(*)) as TheAverage, Count(*) as TheCount 
    FROM rating 
    WHERE month='Aug' 
    GROUP BY username 
    HAVING TheCount > 1 
    ORDER BY TheAverage DESC, TheCount DESC 
2
SELECT username, (SUM(rating)/count()) as TheAverage, count() as TheCount 
FROM ratings 
WHERE month ='Aug' 
GROUP BY username 
HAVING TheCount > 1 
ORDER BY TheAverage DESC, TheCount DESC 

EDIT:

私は密接に十分に見ていないようです。

今はうまくいくと思います。

+1

order by句では、エイリアスである 'TheAverage'を使用したばかりです。 –

+0

ありがとう、しかし、それは動作していないようです。 count()に問題があります – Oliver

1

あなたはAVG集計使用することができますあなたのmonthを濾過し、MySQLされているのでmonthによってグループ化

SELECT username, month, AVG(rating) as TheAverage, COUNT(*) as TheCount 
FROM ratings 
WHERE month ='Aug' 
GROUP BY 
     username 
HAVING COUNT(*) > 1 
ORDER BY 
     TheAverage DESC, TheCount DESC 

は、MySQLでinnesessaryですグループ内のランダム値を返すクエリのGROUP BYリストのグループ化されていない列の選択をサポートしています。