2009-08-06 154 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 

编辑:

好像我没仔细看不够。

我认为它现在会工作。

+1

您刚才在顺序by子句中使用了'TheAverage',它是一个别名。 – 2009-08-06 22:00:21

+0

谢谢,但这似乎并不奏效。 count()有问题 – Oliver 2009-08-06 22:01:44

1

您可以使用AVG骨料:由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,因为你的month过滤,MySQL支持在GROUP BY查询的SELECT列表中选择未分组的列(返回组内的随机值)。