Tengo una tabla que contiene 2 ID: UserID y GroupID . Necesito obtener una lista de todos los ID de usuario que "comparten" el mismo ID de grupo al menos 4 veces
Entonces, con base en el siguiente conjunto de datos:
CREATE TABLE IF NOT EXISTS `tableA` ( `UserID` int(11) unsigned NOT NULL, `GroupID` int(11) unsigned NOT NULL ) DEFAULT CHARSET=utf8; INSERT INTO `tableA` (`UserID`, `GroupID`) VALUES (1, 1), (2, 1), (3, 1), (4, 1), (1, 2), (2, 2), (3, 2), (1, 3), (2, 3), (3, 3), (1, 4), (2, 4), (3, 4), (1, 5), (3, 5);Estoy tratando de generar el siguiente resultado:
| ID de usuario A | ID de usuario B | Numero de incidentes |
|---|---|---|
| 1 | 2 | 4 |
| 2 | 3 | 4 |
| 1 | 3 | 5 |
He creado un SQLFiddle para ello. Intenté lograr esto a través de JOIN y subconsultas, pero no estoy del todo seguro de cómo proceder correctamente con algo como esto.
Haz una autounión . GROUP BY . Use HAVING para asegurarse de que haya al menos 4 ID de grupo comunes.
select a1.userid, a2.userid from tablea a1 join tablea a2 on a1.GroupID = a2.GroupID and a1.userid < a2.userid group by a1.userid, a2.userid having count(*) >= 4