我有一个存储 admin_id
和 comment
的表,我正在尝试查询它以获取与每个管理员关联的不同评论的计数。
我正在尝试这样做:
select admin_id,
count(comment like 'Approved the claim for%') as Approved,
count(comment like 'Rejected the claim for%') as Rejected,
count(comment like 'Temporarily rejected (24 hour hold) the claim for%') as TempReject,
count(comment like 'Permanently rejected the claim for%') as PermReject
from admin_comments
group by admin_id
但是,这会产生以下结果:Approved
、Rejected
、TempReject
和 PermReject
列均相同,以及顶部的一行似乎将它们全部汇总在一起,其中 admin_id
为 NULL
:
我需要在查询中更改哪些内容才能获取按 admin_id
分组的每种类型评论的准确数字。
最佳答案
COUNT 不执行 bool 表达式,因此您不能在 COUNT 中使用 LIKE。您必须使用 CASE/WHEN
select admin_id,
count( WHEN comment like 'Approved the claim for%' THEN 1 ELSE NULL END) as Approved,
count(WHEN comment like 'Rejected the claim for%' THEN 1 ELSE NULL END) ....
请注意,它必须为 NULL 而不是 0,因为 COUNT 计算非空值。 O 是非空值
关于mysql - 使用不同的 where 条件对列进行多次计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41584546/