Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AVG对mysql查询结果进行排名_Mysql - Fatal编程技术网

使用AVG对mysql查询结果进行排名

使用AVG对mysql查询结果进行排名,mysql,Mysql,我有一个在MySQL中对结果进行排序的查询: SET @rank := 0; SELECT Name, Score, @rank := @rank + 1 FROM Results ORDER BY Score 这很好,直到我尝试根据平均分数进行排名: SET @rank := 0; SELECT Name, AVG(Score) as AvScore, @rank := @rank + 1 FROM Results ORDER BY AvScore 如果我运行这个,我只得到一个记录

我有一个在MySQL中对结果进行排序的查询:

SET @rank := 0;
SELECT Name, Score, @rank := @rank + 1 
FROM Results 
ORDER BY Score
这很好,直到我尝试根据平均分数进行排名:

SET @rank := 0;
SELECT Name, AVG(Score) as AvScore, @rank := @rank + 1 
FROM Results 
ORDER BY AvScore
如果我运行这个,我只得到一个记录回来,因为平均值。然而,如果我添加一个组的名字,这样我可以得到每个人列出的平均值,这会弄乱正确的排名


我知道答案可能就在眼前,但我不太明白。如何根据每个名称的平均结果输出其排名?

您需要使用子查询:

SET @rank := 0;

SELECT a.name, 
       a.avscore, 
       @rank := @rank + 1 
FROM   (SELECT name, 
               Avg(score) AS AvScore 
        FROM   results 
        GROUP  BY name) a
ORDER  BY a.avscore 

您需要使用子查询:

SET @rank := 0;

SELECT a.name, 
       a.avscore, 
       @rank := @rank + 1 
FROM   (SELECT name, 
               Avg(score) AS AvScore 
        FROM   results 
        GROUP  BY name) a
ORDER  BY a.avscore 

您必须先排序,然后从派生表中选择秩:

SELECT Name, AvScore, @rank := @rank + 1
FROM (
    SELECT Name, AVG(AvScore) AS AvScore FROM Results 
    GROUP BY Name ORDER BY AVG(AvScore)
) t1, (SELECT @rank = 0) t2;

您必须先排序,然后从派生表中选择秩:

SELECT Name, AvScore, @rank := @rank + 1
FROM (
    SELECT Name, AVG(AvScore) AS AvScore FROM Results 
    GROUP BY Name ORDER BY AVG(AvScore)
) t1, (SELECT @rank = 0) t2;

谢谢,这件非常合身!如何将变量集合并到查询中,以便不必在php中运行多重查询?谢谢,这非常适合!如何将变量集合并到查询中,以便不必在php中运行多重查询?收回这一点,我实际上得到的是null?它的排序很好,只是不会输出排名…?收回,我实际上得到的是空值?它的顺序很好,只是不会输出排名。。。?