Question

Je vais avoir du mal à essayer de classer chacun de nos étudiants, par le groupe résidentiel qu'ils sont.

Exemple de données fausses.

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.

Ma sortie est dans ce qui suit

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.

Je suis en train d'utiliser DENSE_RANK .. et qui fonctionne bien si je lance ce contre un groupe résidentiel unique (par exemple. Homegroup = 1) ... mais je ne suis pas sûr de savoir comment faire cela sur toutes les Homegroups.

Je devine que j'ai besoin d'une requête de mise à jour, qui a une sous-requête ... et ce sous-requête a son propre sous-requête ... ??

Je suis assez confus :( Et je continue à penser sur les curseurs mal que je refuse d'utiliser à moins que j'ai un pistolet sur ma tête (parce que je crois qu'il peut être manipulé correctement avec la notation « Set »).

Était-ce utile?

La solution

Pour obtenir le DENSE_RANK de chaque élève dans l'équipe:

SELECT *, DENSE_RANK() OVER (PARTITION BY Team ORDER BY Score DESC)
   FROM Students;

est-ce pas clair pour moi ce que vous voulez UPDATE bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top