我有一张桌子,用来存放一个人和他的爱好。我想打印(自动)爱好组合列表以及仅选择那些爱好组合的人员总数。爱好列表超过40,所以我希望列表自动生成。
我的桌子看起来像这样
甲1
A-h2
A-h3
乙一
B-h4
C一
碳三
D-h1
D-h4
甲1
E-h3
那是:
A有爱好h1,h2,h3
B有爱好h1,h4
c有爱好h1,h3
D有爱好h1,h4
E有兴趣爱好h1,h3
我的结果是
h1,h2,h3-1
h1,h4-2
h1,h3-2
请帮我找到答案
最佳答案
采用:group_concat()
生成每人的爱好列表
将distinct
和order by
与group_concat()
结合使用以保持组合的一致性
使用外部查询来计算每个组合的频率
尝试这个:
select hobby_list, count(*) from (
select group_concat(distinct hobby order by hobby) hobby_list
from hobbies
group by userid
) x
group by 1