¿No sabes como intentando alinear con un GROUP BY
-
19-09-2019 - |
Pregunta
Tengo problemas al tratar de clasificar a cada uno de nuestros estudiantes, por el grupo en el hogar que se encuentran.
Ejemplo datos falsos.
HomeGroup
1. Team RED
2. Team BLUE
3. Team Skeet
4. Team GREEN
Students
1. John, Score - 34, Team RED
2. Jill, Score - 87.3, Team RED
3. Fred, Score - 41, Team GREEN
4. Jane, Score 93, Team BLUE
...
etc.
Mi salida es el siguiente
Scores
StudentId 1, Score 34, Rank - 5th
StudentId 2, Score 87.3, Rank - 1st
StudentId 3, Score 41, Rank - 9th
StudentId 4, Score 94, Rank - 1st.
Estoy tratando de utilizar DENSE_RANK .. y que funciona bien si me quedo esto en contra de un Grupo Hogar individuales (por ejemplo. Grupo en el hogar = 1) ... pero no estoy seguro de cómo hacer esto sobre TODOS los grupos en el hogar.
supongo que necesito una consulta de actualización, que tiene una subconsulta subconsulta ... y esto tiene su propio sub consulta ... ??
Estoy muy confundido :( Y no dejo de pensar cursores malignos que se niegan a utilizar a menos que tengo una pistola en la cabeza (porque yo creo que puede ser manejado correctamente con 'Set' notación).
Solución
Para obtener el DENSE_RANK de cada estudiante en el equipo:
SELECT *, DENSE_RANK() OVER (PARTITION BY Team ORDER BY Score DESC)
FROM Students;
No me queda claro qué quiere UPDATE sin embargo.