问题描述
|
在我的表格中,我有“团队和积分”列,我想获得前5名的团队。具有相同得分的团队应分组,并考虑作为排名之一,因此,如果5个团队的得分相同,则所有团队都应成为排名和得分之一。下一次根据团队得分记录
解决方法
尝试
SELECT DISTINCT(point),team
FROM tableTeam
ORDER BY points DESC LIMIT 5
, SELECT team,points,(SELECT COUNT(*)
FROM teams t2
WHERE t2.points > t1.points) + 1 rank
FROM teams t1
ORDER BY points DESC
LIMIT 5
,MySQL中没有窗口函数,因此您需要提取脚本中的排名。
另外,如果我了解您的排名标准,那么您实际上有兴趣获得前5名球队以及可能拥有与第5名相同积分的任何其他球队。
如果是这样,您的限制应应用于基于点条件的子查询:
select name,points
from teams
where points >= (
select points
from teams
order by points desc
limit 1 offset 4
)
order by points desc,name
如果没有,那么简单的按/限制定单就可以了:
select name,points
from teams
order by points desc,name
limit 5