包含给定条件mysql的计数和组

时间:2018-06-25 15:46:42

标签: mysql mysqli

我有用户提交的数据,措词不完全相同,但有一个相似之处,请参见下面的示例

 ---No  | Catergory
    526 HIV
    418 HIV/AIDs
    207 RVD
    86  HIV/AIDS.
    84  HIV INFECTION
    58  HIV PATIENT ON HAART
    54  RETROVIRAL DISEASE
    44  LIPODYSTROPHY
    39  MALARIA
    36  HIV MANAGEMENT
    36  Chronic Myeloid Leukemia

我想获取总数,以便将所有带有HIV,H.I.V和Retro的行归为一类

    category | number
    ------------------
    HIV      |    1500
   ----------------------
    MALARIA  |    39
......

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用CASE表达式进行分组,如下所示:

SELECT
    CASE WHEN Category LIKE '%HIV%' OR Category LIKE '%Retro%'
         THEN 'HIV'
         ELSE Category END AS Category,
    COUNT(*) AS number
FROM yourTable
GROUP BY
    CASE WHEN Category LIKE '%HIV%' OR Category LIKE '%Retro%'
         THEN 'HIV'
         ELSE Category END;

您用来将各种类别映射到HIV存储桶中的确切逻辑可能与我上面列出的逻辑不同。您可能只需要使用IN并与要映射的类别的完整列表进行比较即可。