Le sugiero que ponga las condiciones de su cláusula where en su declaración de selección y devuelva una "puntuación" para cada registro. Elimínelo por completo de su cláusula where y puede darle una idea de por qué le faltan registros si se devuelven con una puntuación de 0.
Caso cuando condición Entonces 5cuando condición entonces 4Etc... sino 0Finalizar caso
Una vez tengas tus resultados puntuados, puedes ordenar por tu puntuación de forma descendente y llevarte el primero por persona. O agregue consultas externas adicionales para devolver solo las filas que tienen la puntuación máxima por persona.
Disculpas por contestar desde mi teléfono.