mysql - 如何统计 MySQL 中所有满足条件的不同值?

标签 mysql sql group-by count distinct

我正在尝试编写一个查询来查找特定字段中的不同值,计算该值的出现次数,对于该特定值的所有实例,另一个列值满足,然后显示结果如下(更多解释如下):

示例数据库:

RowId    Status       MemberIdentifier
-----    ------       ----------------
1       In Progress   111111111
2       Complete      123456789
3       Not Started   146782452
4       Complete      111111111
5       Complete      123456789
6       Not Started   146782452
7       Complete      111111111

期望的结果:

Status         MemberIdentifierCount 
------         ---------------------- 
Not Started    1
In Progress    1
Complete       1

在上述查询中,计算并显示了具有给定状态的不同成员标识符的数量。如果 MemberIdentifier 有两行状态为“完成”,而另一行状态为“进行中”,则将其分组并计为进行中(即 MemberIdentifier=111111111)。对于要分组并计为完整的 MemberIdentifier,其所有行的状态必须为“完成”(即 MemberIdentifier=123456789)。任何见解将不胜感激(MySQL 新手)。

最佳答案

根据 MemberIdentifier 找到您认为合适的状态,例如'In Progress' 胜过 'Complete''Not Started''Not Started' 胜过 'Complete'。为此使用条件聚合。

select status, count(*)
from
(
  select 
    case when sum(status = 'In Progress') > 0 then 'In Progress'
         when sum(status = 'Not Started') > 0 then 'Not Started'
         else 'Complete'
    end as status
  from mytable
  group by memberidentifier
) statuses
group by status;

关于mysql - 如何统计 MySQL 中所有满足条件的不同值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47139249/

相关文章:

mysql - MySQL 中所有公司的贸易总和 [删除]

php - sql查询多表查询问题

c# - 按日期对数组项进行分组

mysql - SQL 连接仅使用一张表的两个不同查询

php - 这是什么类型的字符编码?在 MySql 中存储它的最佳数据类型是什么?

c# - MySQL Select 查询 - 根据日期对数据进行排序

mysql - 如何计算 mysql 数据库中结果列的百分比

php - 如何加入插入语句?

sql - MySQL foreach 替代过程

python - Pandas - 使用 Groupby 列出新列中的数据列