Mysql Group通过统计问题

时间:2016-01-15 23:13:08

标签: mysql

数据库结构

表'申请人'

  id       org_id      team_id
   1            1            1

表'团队'

  id        name
   1        Test

表'teams_members'

  id      team_id       user_id
   1            1             1
   2            1             2

表'users_playeraccounts'

  id      user_id        summoner_id           rank_solo
   1            1                  1                   5
   2            1                  2                   8  
   3            2                  3                   7



select sum(rank_solo) as rank_sum,
       max(rank_solo) as  highest_rank,
       count(tt.id) as members,
       t.name,
       o.team_id
           from applicants o 
           join teams t on o.team_id = t.id
           join teams_members tt on t.id = tt.team_id       
           join users_playeraccounts p on tt.user_id = p.user_id
           where org_id = :org
           group by team_id

这个offcourse给我一个像

的结果
    rank_sum      highest_rank      members    name     team_id

    20                 8            3          Test           1

有没有办法让我用他们的玩具帐户来计算会员数

如果1个用户有2,那么它将是2

还有一种让我把它保持为1的方式所以它实际上只计算在teams_members中找到的行忽略users_playeraccounts中的条目?

我想通过查询收到2和3。

1 个答案:

答案 0 :(得分:1)

您想要计算tt.id不同条目的数量,因此您可以这样做:

SELECT ... COUNT(DISTINCT tt.id) AS distinct_members ...

您不会计算每个行的非空tt.id,而是计算唯一值的数量。