具有不同爱好组合的人员的列表计数自动找到组合

时间:2014-02-23 09:26:45

标签: mysql

我有一张表,其中存储了一个人和他的爱好。我想打印爱好组合列表(自动)和只选择那些爱好组合的总人数。爱好列表超过40,所以我希望自动生成列表。

我的表看起来像这样

A-h1
A-h2
A-h3
B-h1
B-h4
C-h1
C-h3
D-h1
D-h4
E-h1
E-h3

即:

A has hobbies h1,h2,h3
B has hobbies h1,h4
c has hobbies h1,h3
D has hobbies h1,h4
E has hobbies h1,h3

我的结果是

h1,h2,h3- 1
h1,h4   - 2
h1,h3   - 2

请帮我找到答案

2 个答案:

答案 0 :(得分:0)

使用:

  • 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  

答案 1 :(得分:0)

Select Hobbies, Count(*) From
(Select `person`, Group_concat(`hobby` Order by `hobby`) as Hobbies
From Table1 Group by `person`) Result 
Group by Hobbies; 

<强> Fiddle