Domanda

Ho problemi cercando di classificare ognuno dei nostri studenti, da parte del gruppo home sono in.

Esempio di dati falsi.

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

ecc.

La mia uscita è il seguente

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.

Sto cercando di usare DENSE_RANK .. e che funziona bene se faccio funzionare questo contro un gruppo home SINGOLA (ad es. Gruppo home = 1) ... ma io non sono sicuro di come fare questo su tutto il Gruppo Home.

Sto indovinando ho bisogno di una query di aggiornamento, che ha un subquery ... e questo subquery ha il proprio sottoquery ... ??

Sono abbastanza confuso :( E io continuo a pensare a cursori maligni che mi rifiuto di usare a meno che non ho una pistola alla testa (perché credo che possa essere gestito correttamente con la notazione 'Set').

È stato utile?

Soluzione

Per ottenere il DENSE_RANK di ogni studente nella squadra:

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

Non mi è chiaro che cosa si desidera che l'UPDATE però.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top