mysql数据库聚合与拆分
1. 背景
在用户使用的时候会有统计数据的情况,在多表联查的时候分类时会有,同一个类型出现多次,然后任务需区是出现一次类型名
2. 聚合查询
GROUP_CONCAT(聚合字段) group_by(聚合字段)
SELECT report.serialNumber as '病人编号', GROUP_CONCAT(label.lableName) AS "标签名", count(lableName) as "数量"
FROM report
LEFT JOIN lablereport on lablereport.reportId = report.id
LEFT JOIN label on label.id = lablereport.lableId
where label.lableName in ("视网膜裂孔","视网膜静脉阻塞","糖尿病视网膜病变")
GROUP BY report.serialNumber
出现如下结果
3. 字符串拆分
标签名去除重复数据
SUBSTRING_INDEX(str, delim, count)
str | 需要拆分的字符串 |
delim | 分隔符,通过某字符进行拆分 |
count | 当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第 n 个分隔符之后的所有字符。 |
SELECT report.serialNumber as '病人编号', SUBSTRING_INDEX(GROUP_CONCAT(label.lableName), ',', '1') AS "标签名", count(lableName) as "数量" FROM report LEFT JOIN lablereport on lablereport.reportId = report.id LEFT JOIN label on label.id = lablereport.lableId where label.lableName in ("视网膜裂孔","视网膜静脉阻塞","糖尿病视网膜病变") GROUP BY report.serialNumber
效果如下: