我有一张桌子,用来存放一个人和他的爱好。我想打印(自动)爱好组合列表以及仅选择那些爱好组合的人员总数。爱好列表超过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()生成每人的爱好列表
distinctorder bygroup_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

10-04 12:11