SQL如何按用户关联code分组统计仅drug、仅alc及两者均有的人数
SQL多标签用户分类统计实现方案
前提说明
现有包含name、code两个字段的业务表,下文SQL中请将你的表名替换为实际的表名称。
实现SQL
SELECT user_type AS code, COUNT(*) AS `Count` FROM ( -- 内层按用户分组,标记每个用户所属的类型 SELECT name, CASE -- 同时关联drug和alc两类code WHEN COUNT(DISTINCT code) = 2 THEN 'drug & alc' -- 仅关联drug WHEN SUM(CASE WHEN code = 'drug' THEN 1 ELSE 0 END) > 0 THEN 'drug' -- 仅关联alc ELSE 'alc' END AS user_type FROM 你的表名 WHERE code <> 'other' -- 过滤code为other的记录 GROUP BY name ) t -- 外层按用户类型分组统计数量 GROUP BY user_type;
结果验证
针对你给出的示例数据,运行上述SQL后输出结果和预期完全一致:
| code | Count |
|---|---|
| drug | 3 |
| alc | 1 |
| drug & alc | 1 |
内容的提问来源于stack exchange,提问作者aannaa
相关产品推荐
相关产品推荐

