MySQL从结果中获取平均值,平均值必须介于8和12之间

MySQL从结果中获取平均值,平均值必须介于8和12之间,mysql,sql,sql-server,average,Mysql,Sql,Sql Server,Average,因此,我试图创建一个MySQL查询来获得排名id的平均值,它必须在8到12之间,否则查询将选择5个随机玩家名称,直到RANKVALUE的平均值在8到12之间 select summonername from (select rankvalue from players group by summonername having count(rankvalue) = 5 order by rand()) group by summonername having avg(rankvalue)

因此,我试图创建一个MySQL查询来获得排名id的平均值,它必须在8到12之间,否则查询将选择5个随机玩家名称,直到RANKVALUE的平均值在8到12之间

select summonername 
from (select rankvalue from 
players group by summonername 
having count(rankvalue) = 5 
order by rand())
group by summonername
having avg(rankvalue) between 8 and 12
使用GROUPBY和Having子句


对于大型结果集,ORDER BY RAND的速度非常慢。我不需要太多,但这似乎也很慢。没有得到需要的结果。它只选择排名值在8到12之间的人。我试着将5个人分组,并从中得到平均排名值。为什么要用sql server标记一个MySQL问题?答案可能会因您使用的不同而不同。
tid  PLAYER NAME   RANKVALUE
1   summonername2   5
1   Summoner 1      22
1   Summoner 2      10
1   Summoner 3      14
1   Summoner 4      10
1   Summoner 2      21
1   test            21
1   yop             13
1   summonername6   12
1   summonername7   16
1   summonername8   5
1   summonername9   13
1   summonername10  21
1   summonername11  1
1   summonername12  9
SELECT `summonername`, AVG(rankvalue)
FROM `players` 
Where tid=1 
group by summonername
Having AVG(rankvalue) between 8 and 12
ORDER BY rand() LIMIT 5