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).

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top