【发布时间】:2015-08-19 05:08:39
【问题描述】:
我有 3 张桌子。
团队
TeamId Team
1 Manchester United
2 Arsenal
3 Liverpool
匹配
MatchId HomeTeamId AwayTeamId MatchStartDate Match_WonBy
3 1 2 2/2/2015 2
8 3 1 6/2/2015 3
分数
ScoreId MatchId TeamId ScorTime
1 3 1 2/2/2015 12:30:00
2 3 2 2/2/2015 12:35:00
3 3 1 2/2/2015 12:38:00
4 8 1 6/2/2015 12:45:00
5 8 1 6/2/2015 12:49:00
我试过了,但我没有得到它。
SELECT Team.TeamName, COUNT(h.HomeTeamId) AS TotalMatch,
SUM(CASE WHEN h.Match_Status = Team.TeamId THEN 1 ELSE 0 END) AS HomeScore,
SUM(CASE WHEN h.Match_WonBy = Team.TeamId OR a.Match_Status= Team.TeamId THEN 1 ELSE 0 END) AS Total
FROM Team RIGHT JOIN Match h
ON Team.TeamId = h.HomeTeamId JOIN Match a
ON Team.TeamId = a.AwayTeamId
GROUP BY Team.TeamName
仅供参考:这不是家庭作业。
这里的积分是通过将 3 乘以获胜并在平局中加 1 来计算的。
【问题讨论】:
-
你怎么知道
draw(column Match_WonBy的值是多少 -
根据您给我们的架构,没有
TeamName列。此外,您应该使用您正在使用的 SQL 类型来标记问题。 -
@Praveen : 对于 draw 值是 0.. 所以它是一个平局。
-
@TimBiegeleisen :TeamName 是 Team.. 刚刚复制粘贴查询表单我的 sql。