mysql - Mysql Sum 使用排名(所有玩家所有回合的最佳 x 分数)
问题描述
- 请帮忙。我在这个论坛上测试了很多例子,但都没有成功。
该脚本运行良好,但我现在希望将总得分限制为最好的 14 轮。
SELECT
RoundScoreCard.idPlayerDetails as ID,
#concat(PlayerFirstName," ",PlayerLastName)as Name,
sum(RoundScoreCardPlayerPoints) as Total
from RoundScoreCard
join PlayerDetails on RoundScoreCard.idPlayerDetails = PlayerDetails.idplayerdetails
group by RoundScoreCard.idPlayerDetails
order by Total DESC
使用此单个子查询进行测试可以正常工作;
select sum(RoundScoreCardPlayerPoints)
FROM
(select RoundScoreCardPlayerPoints
from RoundScoreCard
where RoundScoreCard.idPlayerDetails = @player
order by RoundScoreCardPlayerPoints desc
limit 14) as subquery
;
已经战斗了大约一周,修改了我能找到的每个示例,但无法让这个工作列出所有玩家。我可以展示多种尝试,但这会使其他人混淆这个问题。(我确实有一个解决方案,先对记录进行测试,然后再使用 IF 语句,但这似乎过多且时间成本高。)
- 还; 出于兴趣,是否可以有多个限制语句?即,如果我只希望获得所有回合中最好的 14 次成绩的前 3 名球员怎么办?
示例http://sqlfiddle.com/#!9/f393a6/3
新的一年万事如意。
好的 - 所以我在这篇文章的帮助下进步了一点;https://www.databasejournal.com/features/mysql/selecting-the-top-n-results-by-group-in-mysql.html
谢谢罗布格拉维尔
将每个玩家的最高分限制为 2
我的Sql现在如下:
Select idRoundScorecard, RoundScoreCardPlayerPoints,idPlayerDetails
FROM
(
SELECT idRoundScorecard, RoundScoreCardPlayerPoints, idPlayerDetails,
@player_score_rank := IF(@current_player = idPlayerDetails,
@player_score_rank + 1,
1
) AS player_score_rank,
@current_player := idPlayerDetails
FROM RoundScoreCard
ORDER BY idPlayerDetails, RoundScoreCardPlayerPoints DESC
) ranked
WHERE player_score_rank <= 2;
现在我必须再次总结和排名?
解决方案
这是我的解决方案http://sqlfiddle.com/#!9/4f4fe7/9
select idPlayerDetails as ID, concat(PlayerFirstName," ",PlayerLastName)as Name,sum(Points) as Points
from
(Select idRoundScorecard, RoundScoreCardPlayerPoints as Points,idPlayerDetails
FROM
(SELECT idRoundScorecard, RoundScoreCardPlayerPoints, idPlayerDetails,
@player_rank := IF(@current_player = idPlayerDetails,
@player_rank + 1,
1
) AS player_rank,
@current_player := idPlayerDetails
FROM RoundScoreCard
ORDER BY idPlayerDetails, RoundScoreCardPlayerPoints DESC
) ranked
WHERE player_rank <= 5 )summed
natural join PlayerDetails
group by idPlayerDetails
order by Points desc
;
推荐阅读
- playback - GSAP - 如何将动画绑定到特定的数据属性?
- pandas - Pandas - 将字符串值写入数据框
- makefile - 使用 Makefile 中的模式构建可执行文件
- python - `readline`、`readlines`、`writeline` 和 `writelines` 是否需要以文本模式而不是二进制模式打开 `file` 对象 `f`?
- python-3.x - 如何使用beautifulsoup和python从steam中抓取动态评论内容
- serial-port - 在 Windows 10 上的其他串行终端中使用串行 UART 输出作为输入
- sql - 谷歌数据工作室(postgres)的日期格式问题
- c# - PrintDocument 不能以正常分辨率在 DL 信封上打印图像,它必须是 220x110mm,但我得到的是 205x100mm 图像
- mongodb - Mongodb:查询两个日期之间的文档(字符串格式为“20-05-2019”)
- python - 将列表中的元组转换为字典并计算频率