題目如下
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;