Mysql Group by 计数问题

标签 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

有没有办法让我同时获得成员(member)数量及其玩家帐户

如果 1 个用户有 2 个,则为 2

还有一种方法让我将其保留为 1,这样它实际上只计算在 groups_members 中找到的行,而忽略 users_playeraccounts 中的条目?

我希望收到 2 和 3 作为查询结果。

最佳答案

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

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

您将获得唯一值的数量,而不是为您提供具有非空 tt.id每一行的计数。

关于Mysql Group by 计数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34821439/

相关文章:

php - LIKE 仅选择确切的关键字

php - 在 php 中显示来自数据库的 blob 图像

python - 以特定方式删除 mysqldb 中的重复行

php - 我无法使用准备好的语句将数据输入到我的表中

mysql - 将文章标题与另一个表中列出的标签相匹配

php - 如何在SQL中合并不同表的数据

php - 将数据库条目分配给 Web 服务条目

mysql - 数据 GridView 显示列但不显示数据

mysql - 查询以按类型返回具有 HP 的 Pokemon

mysql - Laravel 三表透视