【问题标题】:How to use the value in one table to count results in another table?如何使用一个表中的值来计算另一个表中的结果?
【发布时间】:2018-09-12 08:30:19
【问题描述】:

我想在我的 SQL 查询中添加一个新列,该列将计算行中的值出现在不同表中的次数。

例如,假设我有这两个单独的表。

表名:Table_A

Id   | Coach  | Team_Color  | Team_Number
------------------------------------------
001  | Jane   | Orange      | 121
002  | Frank  | Purple      | 232
003  | Tim    | Red         | 343

表名:Table_B

Id   | Team_Number | Player_Name  
----------------------------------
901  | 121         | Jimmy  
902  | 121         | Wesley  
903  | 121         | Samantha
904  | 121         | Wendy
905  | 232         | Tim  
906  | 232         | Sean  
907  | 343         | Andrew
908  | 343         | Erik
909  | 343         | Sarah  
910  | 343         | Allison  
911  | 343         | Desmond
912  | 343         | Kathryn

我想得到这样的结果:

Id   | Coach  | Team_Color  | Team_Number | Player Count
--------------------------------------------------------
001  | Jane   | Orange      | 121         | 4
002  | Frank  | Purple      | 232         | 2
003  | Tim    | Red         | 343         | 6

名为“Player Count”的新列引用 Table_A 中的 Team_Number 值,并计算在 Table_B 上找到的实例数。我将如何将其组合成一个查询?

【问题讨论】:

    标签: sql join count


    【解决方案1】:

    您的问题的解决方案:

    SELECT A.Id, A.Coach, A.Team_Color,A.Team_Number,Count(B.Id) AS Player_Count
    FROM Table_A AS A
    INNER JOIN Table_B B
    ON A.Team_Number = B.Team_Number
    GROUP BY A.Id, A.Coach, A.Team_Color,A.Team_Number;
    

    输出:

    Id  Coach   Team_Color  Team_Number  Player_Count
    1   Jane    Orange       121          4
    2   Frank   Purple       232          2
    3   Tim     Red          343          6
    

    点击演示链接:

    http://sqlfiddle.com/#!9/9c6da4/1

    说明:

    在您的问题中,您必须使用JOIN 将两个表连接到一个公共列上,即Team_Number。现在加入后你会得到这样的结果:

    Id  Coach  Team_Color  Team_Number  Id   Team_Number    Player_Name
    1   Jane    Orange       121        901    121           Jimmy
    1   Jane    Orange       121        902    121           Wesley
    1   Jane    Orange       121        903    121           Samantha
    1   Jane    Orange       121        904    121           Wendy
    2   Frank   Purple       232        905    232           Tim
    2   Frank   Purple       232        906    232           Sean
    3   Tim     Red          343        907    343           Andrew
    3   Tim     Red          343        908    343           Erik
    3   Tim     Red          343        909    343           Sarah
    3   Tim     Red          343        910    343           Allison
    3   Tim     Red          343        911    343           Desmond
    3   Tim     Red          343        912    343           Kathryn
    

    现在在上面的Result上使用聚合函数COUNT得到最终结果。

    【讨论】:

    • 请补充一些信息
    • 是的,我正在添加信息
    • 如果您觉得这个答案有用,请接受它作为答案。
    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多