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

效果如下:

 

posted @ 2024-11-25 18:03  独丨恋  阅读(7)  评论(0编辑  收藏  举报