SQL 根据 like 语句和 Group by 进行计数

SQL Count based on like statement and Group by

我有一个 table 类似于下面的结构。我需要根据 MessageValue 列的值计算失败、成功和部分成功的次数。如果 Messagevale 列包含 'failed' 那么它是失败的,'success' 被认为是成功而 'partial success' 被认为是部分失败。所以我需要在计数中检查 LIKE 标准,而且我需要它基于日期。我尝试使用 Count 和 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