【问题标题】:How make SQL JOIN and COUNT rows COUNT by groups in result?如何使 SQL JOIN 和 COUNT 行在结果中按组计数?
【发布时间】:2017-11-22 10:31:59
【问题描述】:

我有两张表 country_champions 和 player。我需要通过字段国家/国籍加入它并按国籍计算玩家(第二张表中的第一行不好,必须删除)。 我怎么能这样做? 结果必须是:

id   nationality   wins   players
---------------------------------
1    Brazil        5      1
2    Germany       4      1
3    Italy         4      2
4    Argentina     2      5
5    Uruguay       2      0
6    France        1      0
7    Spain         1      1

国家冠军

id   country   wins
-------------------
1    Brazil    5
2    Germany   4
3    Italy     4
4    Argentina 2
5    Uruguay   2
6    France    1
7    Spain     1

玩家

id  name       club       nationality  wins
-------------------------------------------
1   id  name   club       nationality  wins
2   Bob Dylan  Villariba  Brazil       5
3   Chuck Nor  Barselona  USA          3
4   Ronaldo    Barselona  Germany      7
5   Brutallo   Real M     Italy        7
6   Max        Real N     taly         5
7   Mudila     Dynamo     Spain        3
8   Chuvila    Dynamo     Ukraine      3
9   Chuvila    Dynamo     Argentina    3
10  Player1    Dynamo     Argentina    4
11  Player2    Dynamo     Argentina    5
12  Player3    Dynamo     Argentina    8
13  Player4    Dynamo T   Argentina    8

【问题讨论】:

  • 你试过什么?向我们展示您当前的查询尝试。
  • 有很多关于如何加入、组和获得组数的示例。您可以发布到目前为止您尝试过的 SQL 吗?您对哪一部分有问题?
  • 有了样本数据,预期的结果是什么?
  • @jarlh 预期结果是显示Result must be:的第一个数据样本
  • @Fran,哎呀,现在我明白了。 (咖啡太少是我唯一的借口。)

标签: sql join group-by count


【解决方案1】:

尝试左加入玩家表,然后执行 count():

Select c.id,
   c.country,
   c.wins,
   count(p.name) as players
from country_champions c
left outer join players p
   on c.country = p.nationality 
group by c.id,
   c.country,
   c.wins

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    相关资源
    最近更新 更多