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