我有一个 MySQL 数据库,可以在其中添加电视上播放的足球比赛。每个团队都表示为一个数字。我真的不知道如何进行查询以列出一支球队在电视上播出的次数,无论他们是在主场还是客场比赛。
我正在尝试列出在电视上播放的前 20 名球队名单。我有团队 ID 的两列分别称为“hjemmehold”和“udehold”(它是丹麦语 :))。
任何人都可以在这里帮助我吗?
SELECT Team, Count(*)
FROM (select Away as Team from Games union all select Home as Team from Games) t
GROUP BY Team
ORDER BY Count(*) Desc
LIMIT 20
SELECT SUM(Away)+SUM(Home) AS NumGames
FROM Games
WHERE Team=@Team
显然这是伪代码,但是把正确的表/字段/参数放进去,你应该很高兴。
对于所有 20 支球队:
SELECT TOP 20 Team, SUM(Away)+SUM(Home) AS NumGames
FROM Games
ORDER BY SUM(Away)+SUM(Home) desc
t.his 应该可以给你出战过的前 20 支球队。这还可以让您找到哪些球队还没有参加过比赛(如果您删除前 20 名部分)。
SELECT TOP 20
team_id,
(SELECT COUNT(1) FROM GAMES WHERE HOME = t.team_id) + (SELECT COUNT(1) FROM GAMES WHERE AWAY = team_id) AS team_count
FROM TEAMS T
ORDER BY team_count DESC