문제

각 학생이 속한 홈 그룹별로 순위를 매기는 데 어려움을 겪고 있습니다.

가짜 데이터의 예.

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

등.

내 결과는 다음과 같습니다

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.

DENSE_RANK를 사용하려고 합니다..단일 홈 그룹(예:홈 그룹 = 1)...하지만 모든 홈 그룹에 대해 이 작업을 수행하는 방법을 잘 모르겠습니다.

하위 쿼리가 있는 업데이트 쿼리가 필요할 것 같습니다.그리고 이 하위 쿼리에는 자체 하위 쿼리가 있습니다.??

나는 꽤 혼란스럽습니다 :( 그리고 나는 내 머리에 총이 있지 않는 한 사용을 거부하는 사악한 커서에 대해 계속 생각하고 있습니다(왜냐하면 'Set' 표기법으로 올바르게 처리할 수 있다고 믿기 때문입니다).

도움이 되었습니까?

해결책

팀 내 각 학생의density_rank를 얻으려면:

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

그래도 업데이트를 원하는 것이 무엇인지 명확하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top