php - 获取每组前三名的比赛记录
问题描述
我运行这个查询,它给了我正确的数据。唯一的问题是我想要每组的前 3 条记录;这会给我总记录。
SELECT division_teams.division_id,division_teams.team_id,seasons.name,SUM(team_points.total) AS points
FROM seasons
INNER JOIN division_teams ON division_teams.season_id = seasons.id
INNER JOIN team_points ON
eam_points.team_id = division_teams.team_id
WHERE seasons.id = 19
GROUP BY
division_teams.division_id,team_points.team_id
ORDER BY division_id ASC,points DESC
表输出
解决方案
将自联接与子查询一起使用
SELECT A.devision_id, A.team_id,A.name,a.points, COUNT(lesser.point) AS rank
FROM
(SELECT division_teams.division_id,division_teams.team_id,seasons.name,SUM(team_points.total) AS points FROM seasons INNER JOIN division_teams ON division_teams.season_id = seasons.id INNER JOIN team_points ON eam_points.team_id = division_teams.team_id
WHERE seasons.id = 19 GROUP BY division_teams.division_id,team_points.team_id
) A
LEFT JOIN
(SELECT division_teams.division_id,division_teams.team_id,seasons.name,SUM(team_points.total) AS points FROM seasons INNER JOIN division_teams ON division_teams.season_id = seasons.id INNER JOIN team_points ON eam_points.team_id = division_teams.team_id
WHERE seasons.id = 19 GROUP BY division_teams.division_id,team_points.team_id
) AS lesser
ON A.division_id = lesser.division_id AND A.points < lesser.point
GROUP BY A.devision_id, A.team_id,A.name,a.points
HAVING COUNT(lesser.point) < 3
ORDER BY A.division_id ASC,A.points DESC
推荐阅读
- objective-c - 如何更改 UIAlertAction 字体?
- javascript - 为什么在另一个锚内动态创建锚时href不起作用?
- c# - 检查 System.Collections.IList 的任何项目是否为空
- macos - 为 wine/heidisql 创建 Mac 启动器脚本的问题
- java - 尽管已初始化 HashMap,但 HashMap.put 方法仍不起作用
- android - Dagger 2 - 构造函数注入 - 非活动
- python - for if 循环根据条件进行分类
- excel - Excel Mac 宏
- python - 无法模拟方法
- python - 游标对象的 MySQL-Python 连接器属性错误