非常新的SQL,以及我所拥有的 - 基本上是一个赛季每场比赛中所有球员的数据库,就像这样(实际上有数千行):
Player Points Team Date
Johnson 20 PHI 3-5-13
Jackson 30 PHI 3-5-13
Wilson 9 PHI 3-5-13
Anderson 18 DET 3-5-13
Thomas 17 DET 3-5-13
Coleman 21 CHI 3-6-13
Robinson 33 CHI 3-6-13
这就是我想要查询的内容 - 列出每个游戏的每个团队的所有双人组合并总计它们。因此,对于上面的例子,3-5-13游戏的PHI的双人组合是Johnson / Jackson,Johnson / Wilson和Jackson / Wilson。所以首先需要在同一天为同一队伍中的所有球员获得所有可能的2人组合。然后,我想要一个报告,它将在所有游戏中累计所有这些组合。所以,让我们说Johnson&杰克逊在PHI队打了25场比赛,约翰逊& amp;威尔逊13岁参加比赛 - 我希望最终结果能够读到:
Player 1 Player 2 Games
Jackson Johnson 25
Johnson Wilson 13
使用SQL查询执行此操作的任何简单方法?基本上我想让他们在同一天在同一支队伍中进行所有双人组合,然后获得每个组合的总比赛。
答案 0 :(得分:0)
这应该这样做:
select
p1.player as player1,
p2.player as player2,
sum(p1.points + p2.points) as points,
sum(1) as games
from
games p1 join games p2 on
p1.player < p2.player and
p1.team = p2.team and
p1.date = p2.date
group by
p1.player,
p2.player
球员加入的次数超过了,所以你没有得到两次相同的组合(约翰逊 - 杰克逊+杰克逊 - 约翰逊)。
答案 1 :(得分:0)
SELECT
[Player 1] = t1.Player,
[Player 2] = t2.Player,
Games = COUNT(*),
Points = SUM(t1.Points + t2.Points),
[Recent Game] = MAX(t1.date)
FROM Temp t1
INNER JOIN Temp t2
ON t2.Player > t1.Player
AND t2.Team = t1.Team
AND t2.Date = t1.Date
GROUP BY t1.Player, t2.Player