【问题标题】:Find total number of times a number appears in two columns查找数字在两列中出现的总次数
【发布时间】:2016-02-13 22:38:57
【问题描述】:

我有一个 MySQL 数据库,可以在其中添加电视上播放的足球比赛。每个团队都表示为一个数字。我真的不知道如何进行查询以列出一支球队在电视上播出的次数,无论他们是在主场还是客场比赛。

我正在尝试列出在电视上播放的前 20 支球队名单。我有团队 ID 的两列分别称为“hjemmehold”和“udehold”(这是丹麦语:))。

有人可以帮我吗?

【问题讨论】:

  • UNION + COUNT + DISTINCT
  • 您能告诉我们您的表格是如何设置/行/列的吗?

标签: php mysql


【解决方案1】:
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 Team, Count() FROM (select udehold as Team from kampe WHERE dato ) Desc LIMIT 20 非常感谢!
【解决方案2】:
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

【讨论】:

  • 这适用于获得一支球队的总比赛数,但不适用于排名前 20 名的名单。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2020-03-27
    • 1970-01-01
    • 2016-10-04
    • 2021-11-28
    • 1970-01-01
    • 2011-10-16
    • 2011-06-14
    • 2021-06-11
    • 1970-01-01
    相关资源
    最近更新 更多