php - 如何在 MySQL 中选择 TOP n 分组值的 AVG?

标签 php mysql group-by

数据库:

player  |  team  |  points  
player1 | team1  |  100
player2 | team1  |  90
player3 | team2  |  100
player4 | team2  |  95
player5 | team2  |  90

我试图从每支球队的积分中获得前 2 名球员,并将他们平均计算到球队排名中,同时在查询中对球队进行分组:

team2 97.5 (not 95)
team1 95


       `$mysqli->query("SELECT charGuild, gr FROM (
        SELECT charGuild, AVG(charRating) as gr 
        FROM ins_rated 
        GROUP BY charGuild 
        HAVING COUNT(*) >= 10
        ORDER BY gr DESC
        LIMIT 15
        )
       ORDER BY gr DESC
       LIMIT 40");`

没有按预期工作。

$mysqli->query("SELECT charGuild, AVG(charRating) AS gr 
                                        FROM ins_rated 
                                        GROUP BY charGuild 
                                        HAVING COUNT(*) >= 10
                                        ORDER BY gr DESC
                                        LIMIT 40");

列出了数据库中至少有 10 人的顶级团队。现在添加一种方法让前 15 名球员只计算平均球队得分是我迷路的地方。

最佳答案

SELECT charGuild, AVG(charRating) as gr FROM ins_rated GROUP BY charGuild order by gr desc limit 2 

关于php - 如何在 MySQL 中选择 TOP n 分组值的 AVG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4816506/

相关文章:

php - 我应该怎么做才能使 mysql 100% 最优?

mysql - 谷歌云 SQL 监控

php - Magento group by 日期字段的子句

python pandas groupby 然后计算满足条件的行

android - Parse.com 相当于 Group By

PHP DateTime::createFromFormat 忽略闰年

php - 使用 sys_exec 触发 mysql 到 sql server

php - WordPress 在前端显示旧数据

mysql - 从表中删除最小值

mysql - 您可以创建一个不是存储过程的通用脚本吗?