我有麻烦试图排名我们每一个学生,通过他们在家庭组。

实施例的假数据。

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)...但我不知道如何在所有家庭组做到这一点。

我猜我需要一个更新查询,其中有一个子查询......这子查询都有它自己的子查询... ??

我很困惑:(我不断思考我拒绝使用,除非我有一个用枪指着我的头(因为我相信它可以正确地“设置”符号来处理)邪恶的光标。

有帮助吗?

解决方案

要获得在球队每个学生的DENSE_RANK:

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

你想要的UPDATE虽然什么我也不清楚。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top