2017-04-01 54 views
0

发现球队赢得和输掉比赛的次数? 找出球队赢得和输掉比赛的次数?

Find how many times team has won and loss the matches ? 
 
My Table Structure 
 

 
TeamA | TeamB | Won 
 
A  | D  | D 
 
B  | A  | A 
 
A  | D  | A 
 

 
Result should be like below 
 

 
TeamName | Won | Lost 
 
A  | 2 | 1 
 
B  | 0 | 1 
 
D  | 1 | 1

+2

你应该真正展示你的尝试。 –

回答

0

您将使用此查询得到正确的结果:

选择team.t AS TeamName,(SELECT COUNT(*)FROM TeamTable WHERE赢得= team.t)AS赢了,( SELECT WHERE won!= team.t AND(TeamA = team.t || TeamB = team.t))AS从(选择= TeamA AS t来自TeamTable UNION SELECT TeamB AS t FROM TeamTable)团队

+0

非常感谢Gurubaksh的帮助。 –

0

条件聚合并结合使用以使数据标准化。

SELECT A.Team as TeamName, 
SUM(CASE WHEN A.TeamA=A.Won then 1 else 0 end) as Won 
SUM(CASE WHEN A.TeamA<>A.Won then 1 else 0 end) as Lost 
FROM (SELECT TeamA as Team, Won 
     FROM TABLE 
     UNION ALL 
     SELECT TeamB as Team, Won 
     FROM Table 
    ) A 
GROUP BY A.Team 
0

您需要先使用teamA和teamB的联合来获取所有团队。

一旦完成,您就可以通过在赢得团队中进行分组来进行获胜球队的统计。

如果team won为空,则表示它失败并且不为null意味着如果赢了并且数不过是赢得比赛的次数。下面是同样的查询

选择t.team,当won不为空的情况下,然后赢得其他0结束为赢得,当赢得为null的情况下,则1其他0结束作为丢失(从选择teamA aa来自表 Union 从表中选择teamB)t左加入 (选择韩元,赢得韩元)韩元表示t.team = m.won