Mysql 使用子查询选择计数
我保存两个系列中最好的一个系列的数据。因此,每场比赛都有两场与同一支球队相关的比赛 这意味着每场比赛都有两场比赛,表格中记录了每支球队每场比赛的记录 因此,每1场比赛有4条记录(A队第1场、A队第2场、B队第1场和B队第2场)。一场比赛有3种可能的结果:2-0、1-1或0-2 示例:A队与B队、C队和D队进行3场比赛(2-0、2-0和1-1) select语句的预期结果如下:Mysql 使用子查询选择计数,mysql,subquery,Mysql,Subquery,我保存两个系列中最好的一个系列的数据。因此,每场比赛都有两场与同一支球队相关的比赛 这意味着每场比赛都有两场比赛,表格中记录了每支球队每场比赛的记录 因此,每1场比赛有4条记录(A队第1场、A队第2场、B队第1场和B队第2场)。一场比赛有3种可能的结果:2-0、1-1或0-2 示例:A队与B队、C队和D队进行3场比赛(2-0、2-0和1-1) select语句的预期结果如下: matchId | Team | Wins 1 | A | 2 1 | B |
matchId | Team | Wins
1 | A | 2
1 | B | 0
2 | A | 2
2 | C | 0
3 | A | 1
3 | D | 1
实际数据:
matchId | gameId |teamName | Victory | Loss
2959 3635 Frost 0 1
2959 3490 Frost 1 0
2959 3490 SKT 0 1
2959 3635 SKT 1 0
2956 3487 Frost 0 1
2956 3573 Frost 0 1
2956 3573 Shield 1 0
2956 3487 Shield 1 0
2923 3452 SKT 1 0
2923 3507 SKT 1 0
2923 3507 IM1 0 1
2923 3452 IM1 0 1
因此,我正在寻找以下代码:
matchId |teamName | Wins
2959 Frost 1
2959 SKT 1
2956 Frost 0
2956 Shield 2
2923 SKT 2
2923 IM1 0
这是我当前的代码,试图找出它:
SELECT DISTINCT b.matchId, c.teamName, d.Wins
FROM PoolOfTeams a JOIN (
SELECT t1.matchId, t1.gameId, t1.teamName FROM poolOfTeams t1
) b on (b.matchId = a.matchId) JOIN (
SELECT t2.gameId, t2.teamName FROM poolOfTeams t2
) c ON (c.gameId = b.gameId) JOIN (
SELECT t3.teamName, SUM(t3.matchVictory) AS Wins
FROM poolOfTeams t3 group by matchId
) d ON (d.teamName = c.teamName);
试一试
我想你要找的是“分组”
编辑:交换组和order语句的顺序。谢谢Rahul。那
订购人
不应该在分组人
之后吗?你可能需要count(win)
。我总是第一次就把订单搞砸,不管我用了多少次。这就像插上USB线一样,100%的时候,它都不起作用。不起作用。我认为主要的问题是每1场比赛有4项记录。A队和B队在第1场比赛中创造了2项记录,A队和B队在第2场比赛中又创造了2项记录。因此,比赛有可能是2-0、1-1或0-2。因此,是的,我希望它按matchId分组,但我也希望它能将特定球队在特定比赛中的获胜数量相加,即2、1或0。也许我需要查看一个更完整的表格示例,但您每场比赛显示4条记录,但只有2条记录在“获胜”列中有“1”。SUM(win)将根据获胜的数量为每支球队提供每场比赛0、1或2的分数。我认为Matt的答案与您的样本数据吻合得很好。如果你发布Matt的答案不会产生错误结果的样本数据,那就更好了。
SELECT matchID, Team, SUM(Win) AS Wins
FROM poolOfTeams
GROUP BY matchID, Team
ORDER BY Team ASC