2016-02-23 2 views
-1

Если предположить, что мы имеем следующую таблицу:Как подсчитать уникальные кластеры для значения

ID Activity PersonID 
1  C1   P1 
2  C2   P1 
3  C3   P1 
4  C11   P2 
5  C1   P2 
6  C1   P3 
6  C11   P3 
... 
100 C2   P50 

, где деятельность каждого человека отражаются по коду деятельности, я хотел бы быть в состоянии иметь ряд уникальных групп действия для каждого человека, которые выходят из этой таблицы. Мы знаем, что в этой таблице есть определенные пакеты действий, которые повторяются для разных персональных идентификаторов. Я хотел бы знать, сколько разных уникальных групп есть и что такое группировки. Например, P2 и P3 имеют одинаковые действия, и это сделает эту уникальную группу действий.

Есть ли запрос SQL, который может дать мне это?

+1

Пожалуйста, покажите нам, что вы хотя бы попытались решить проблему. – dfundako

+2

Какая СУБД вы используете? И каков ожидаемый результат на основе ваших выборочных данных? –

+0

Я пробовал, безрезультатно. Теперь я думаю, что должен написать код Python для решения проблемы. Я использую MS-Access Основываясь на данных образца, я хотел бы видеть следующий вывод: GroupID Frequency Activity 1 -------------- 10 ----- -------- C1 1 ------------- 10 ------------ C2 1 -------- ------ 10 ------------ C3 2 -------------- 14 ------------ C1 2 -------------- 14 ------------ C11 –

ответ

0

Если база данных, которую вы используете, поддерживает объединение конкатенации строк, то это простой способ решить вашу проблему. Например, используя MySQL group_concat():

select activities, group_concat(personid) as persons 
from (select personid, group_concat(activity order by activity) as activities 
     from t 
     group by personid 
    ) p 
group by activities; 
Смежные вопросы