mysql - 包含给定条件mysql的计数和组
问题描述
我有用户提交的数据,措辞并不完全相同,但有相似之处,请参见下面的示例
---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、HIV、Retro 的行归为一个这样的类别
category | number
------------------
HIV | 1500
----------------------
MALARIA | 39
......
有什么建议么?
解决方案
使用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
并与要映射的完整类别列表进行比较。
推荐阅读
- postgresql - 传入连接需要 application_name
- azure - Azure - 为 Azure API 管理配置灾难恢复和自动故障转移?
- wordpress - 通知作者发布状态更改
- javascript - 产生不停止 ember 并发任务中的流程
- jquery - 使用 jquery 验证禁用按钮
- html - 如何在 SVG 的矩形内设置标题标签的样式?
- javascript - 如何在节点 js 中从与 localhost:8080/?data=test 相邻的 URL 读取数据
- nginx - 如何通过 nginx 使根目录子文件夹可用?
- java - Java Web 应用程序中的 LDAPS 和 LDAP 签名以及基于 LDAP 通道绑定的支持
- python - 在某个单词之后从行中删除单词