hql 中分組函數 group by 支持多字段拼接的例題


題目如下

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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM