Frage

Ich habe Probleme beim Versuch, jeden unserer Studenten Rang, durch die Heimnetzgruppe sie sind in.

Beispiel gefälschte Daten.

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.

Meine Ausgabe ist in dem folgenden

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.

Ich versuche DENSE_RANK zu verwenden .. und das funktioniert gut, wenn ich dies gegen eine einzige Heimnetzgruppe laufe (z. B. Heimnetzgruppe = 1) ... aber ich bin nicht sicher, wie dies die Stammgruppen über alles zu tun.

Ich vermute, ich eine Update-Abfrage benötigen, die eine Unterabfrage hat ... und diese Unterabfrage hat seine eigene Unterabfrage ... ??

Ich bin ziemlich verwirrt :( Und ich möchte über die bösen Cursor zu denken, die ich ablehnen zu verwenden, es sei denn ich eine Pistole an den Kopf bekommen habe (denn ich glaube, es kann richtig mit ‚Set‘ Notation behandelt werden).

War es hilfreich?

Lösung

Um die DENSE_RANK der einzelnen Schüler im Team zu bekommen:

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

Ist mir nicht klar, was wollen Sie das UPDATE though.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top