我很难通过他们所在的家庭小组对每个学生进行排名。
假数据示例。
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 ..并且如果我针对SINGLE HomeGroup(例如homegroup = 1)运行它,则可以正常工作......但我不确定如何在所有家庭组中执行此操作。< / p>
我猜我需要一个更新查询,它有一个子查询...而且这个子查询有它自己的子查询...... ??
我很困惑:(而且我一直在考虑我拒绝使用的邪恶游标,除非我有一把枪在我头上(因为我相信它可以通过'Set'符号正确处理)。
答案 0 :(得分:1)
获得团队中每个学生的密集学习:
SELECT *, DENSE_RANK() OVER (PARTITION BY Team ORDER BY Score DESC)
FROM Students;
我不清楚你想要更新什么。