如何解决基于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 举报,一经查实,本站将立刻删除。