gpt4 book ai didi

mysql - SQL查询计算谁拥有最多的比赛胜利

转载 作者:搜寻专家 更新时间:2023-10-30 23:41:44 26 4
gpt4 key购买 nike

我正在创建一个简单的数据库,它可以让我跟踪斯诺克比赛的结果,从而在球员之间产生正面交锋的结果。目前我有 3 个表:(Player, Fixture, Result)

PlayerID    PlayerName
1 Michael Abraham
2 Ben Mullen
3 Mark Crozier

FixtureID Date TableNo Group
1 07/12/2015 19:00:00 12 0
2 08/12/2015 12:00:00 9 0

ResultID FixtureID PlayerID FramesWon
1 1 1 3
2 1 3 1
3 2 1 2
4 2 3 5

如您在结果表中所见,Player1 与 Player3 交手两次,Player1 以 3-1 赢得第一场比赛,Player3 以 5-2 赢得第二场比赛。我想要一个查询,返回两个玩家之间赢得的比赛总数。在这种情况下,预期的输出应该是:

PlayerID    MatchesWon
1 1
3 1

任何帮助将不胜感激 - 我什至不确定这是否可以通过查询实现

最佳答案

如果可用的话,我同意使用窗口函数是最好的方法(例如 SQL Server)以这种方式使用直接的 SQL 方法可能是可能的(假设在“固定装置”中获胜最多的人是比赛获胜者)

    SELECT PlayerId, FixtureID, Count(*) As MatchesWon
FROM Result r
WHERE r.Frameswon = (SELECT MAX(frameswon) FROM Result r2
WHERE
r.FixtureId = r2.FixtureId)
GROUP BY PlayerID,FixtureId

或者如果可以省略 fixtureId,并仅针对这 2 名球员进行过滤,也可以像这样。上面给出的数据应该带来样本结果。

    SELECT PlayerId, MatchesWon 
FROM
(
SELECT FixtureID,PlayerId, Count(*) As MatchesWon
FROM Result r
WHERE r.Frameswon = (SELECT max(frameswon) FROM Result r2
WHERE
r.FixtureId = r2.FixtureId)

GROUP BY FixtureId,PlayerID
) s
WHERE
PlayerID IN (1,3)

关于mysql - SQL查询计算谁拥有最多的比赛胜利,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34256976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com