题目如下
name |
constellation |
blood_type |
孙悟空 |
白羊座 |
A |
大海 |
射手座 |
A |
宋宋 |
白羊座 |
B |
猪八戒 |
白羊座 |
A |
凤姐 |
射手座 |
A |
求出星座血型一样的人,用“ | ”连接:
射手座,A 大海|凤姐
白羊座,A 孙悟空|猪八戒
白羊座,B 宋宋
解法一: 利用子查询,先将星座和血型组合为一个字段,然后再利用这个组合字段分组,进行姓名的拼接
select t1.base, concat_ws('|', collect_set(t1.name)) name from (select name, concat(constellation, ",", blood_type) base from person_info) t1 group by t1.base;
解法二: 直接对星座,血型俩个字段进行分组,然后姓名拼接
select constellation,blood_type,concat_ws('|',collect_set(name)) from person_info group by constellation,blood_type;