微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于like语句和Group by的SQL计数

如何解决基于like语句和Group by的SQL计数

我有一个类似于以下结构的表。我需要根据MessageValue列的值获取失败,成功和部分成功的计数。如果Messagevale列包含“失败”,则为“失败”,将“成功”视为成功,将“部分成功”视为部分失败。因此,我需要检查计数内的LIKE标准,并且我还需要根据日期进行检查。我尝试使用Count with Group by进行尝试,但没有得到我所需要的。

Date                   MessageValue
-----------------------------------------------
10/18/2020             Process Failed some text here
10/18/2020             Process success some text here
10/19/2020             Partial success some text here
10/19/2020             Process Failed some text here
10/19/2020             Process Failed some text here
10/19/2020             Process partial success some text here
10/20/2020             Process partial success some text here
------------------------------------------------

所以输出应如下所示。

Date                   Success      Failure     Partial Failure
-----------------------------------------------------------------
10/18/2020               1             1            0
10/19/2020               1             2            1
10/20/2020               0             0            1

解决方法

您可以在like条件下进行条件聚合。这似乎可以满足您的要求:

select
    date,sum(case when col like '%success%' and col not like '%partial success%' then 1 else 0 end) success,sum(case when col like '%failed%' then 1 else 0 end) failure,sum(case when col like '%partial failed%' then 1 else 0 end) partial_success
from mytable
group by date

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。