¿Cómo evitar grupos pero requieren un conteo mínimo?

He respondido y leí muchas preguntas sobre cómo get el mejor n-por-grupo, pero ahora me encuentro necesitando lo contrario.

Tengo un set de resultados que muestra los estudiantes, la date y el proyecto que representan qué estudiantes trabajaron en un proyecto en un día determinado.

Me gustaría ver filas donde varios estudiantes trabajaron en un proyecto para ese día. Entonces, si mi set de resultados se ve así:

| student | date | project | +---------+------------+---------+ | 1 | 2014-12-04 | 1 | | 2 | 2014-12-04 | 1 | | 3 | 2014-12-04 | 1 | | 1 | 2014-12-03 | 1 | 

Solo me gustaría ver las primeras tres filas, así puedo ver que los estudiantes 1,2,3 trabajaron juntos en el mismo proyecto el mismo día. Podría filtrar así:

 GROUP BY date, project HAVING COUNT(*) > 1 

Pero solo se devolverá una fila.

puede usar su consulta existente como subconsulta y get los resultados

DEMO SQL FIDDLE

 SELECT * from Table1 T1 JOIN ( SELECT date, project from table1 group by date, project having count(*) >1 ) t on t1.date = t.date and t1.project = t.project 

Esto debería funcionar.

Pienso en la tabla como dos sets de datos y los unimos según la date y el proyecto, y no el mismo alumno.

De esta forma, si existen loggings después de la unión, sabemos que tienen el mismo proyecto y date, pero no para el mismo alumno. Agrupe los resultados … y tiene lo que busca.

 SELECT A.student, A.date, A.project from table a INNER JOIN table b on A.date=B.Date and A.Project=B.Project and a.student<> b.student group by A.student, a.date, a.project