我一生都无法弄清楚如何获得 X 类别分数的加权排名。例如,学生需要回答 3 个类别的 10 个问题(问题的数量和类别的数量最终都会变化)。要获得总分,每个 X (3) 个类别中的前 1 分将被添加到剩下的任何内容中,从而总计 10 个问题总分。
这是数据。我使用 CASE WHEN Row_Number() 来获取 TopInCat
http://sqlfiddle.com/#!6/e6e9f/1
小提琴有更多的学生。
| 问题 | 学生 | 类别 | 分数 | TopInCat | |---------|----------|----------|--------|--------- -| | 120149 | 125 | 6 | 1 | 1 | | 120127 | 125 | 6 | 0.9 | 0 | | 120124 | 125 | 6 | 0.8 | 0 | | 120125 | 125 | 6 | 0.7 | 0 | | 120130 | 125 | 6 | 0.6 | 0 | | 120166 | 125 | 6 | 0.5 | 0 | | 120161 | 125 | 6 | 0.4 | 0 | | 120138 | 125 | 4 | 0.15 | 1 | | 120069 | 125 | 4 | 0.15 | 0 | | 120022 | 125 | 4 | 0.15 | 0 | | 120002 | 125 | 4 | 0.15 | 0 | | 120068 | 125 | 2 | 0.01 | 1 | | 120050 | 125 | 3 | 0.05 | 1 | | 120139 | 125 | 2 | 0 | 0 | | 120156 | 125 | 2 | 0 | 0 |
这就是我设想它需要的样子,但不一定是这样。我只需要按 3 个类别详细数据列出 10 个问题,这样我就可以对下面的 Sort 1-10 列进行求和和平均。999 可以是 null 或其他任何值,只要我能总结出重要的内容并提供详细信息即可。
| 问题 | 学生 | 类别 | 分数 | TopInCat | 排序 | |---------|----------|----------|--------|--------- -|--------| | 120149 | 125 | 6 | 1 | 1 | 1 | | 120138 | 125 | 4 | 0.15 | 1 | 2 | | 120068 | 125 | 2 | 0.01 | 1 | 3 | | 120127 | 125 | 6 | 0.9 | 0 | 4 | | 120124 | 125 | 6 | 0.8 | 0 | 5 | | 120125 | 125 | 6 | 0.7 | 0 | 6 | | 120130 | 125 | 6 | 0.6 | 0 | 7 | | 120166 | 125 | 6 | 0.5 | 0 | 8 | | 120161 | 125 | 6 | 0.4 | 0 | 9 | | 120069 | 125 | 4 | 0.15 | 0 | 10 | | 120022 | 125 | 4 | 0.15 | 0 | 999 | | 120002 | 125 | 4 | 0.15 | 0 | 999 | | 120050 | 125 | 3 | 0.05 | 1 | 999 | | 120139 | 125 | 2 | 0 | 0 | 999 | | 120156 | 125 | 2 | 0 | 0 | 999 |
最后一件事,一旦满足 X (3) 阈值,类别就不再重要。因此,第 4 类将正常排序。
| 问题 | 学生 | 类别 | 分数 | TopInCat | 排序 | |---------|----------|----------|--------|--------- -|--------| | 120149 | 126 | 6 | 1 | 1 | 1 | | 120138 | 126 | 4 | 0.75 | 1 | 2 | | 120068 | 126 | 2 | 0.50 | 1 | 3 | | 120127 | 126 | 6 | 0.9 | 0 | 4 | | 120124 | 126 | 6 | 0.8 | 0 | 5 | | 120125 | 126 | 6 | 0.7 | 0 | 6 | | 120130 | 126 | 6 | 0.6 | 0 | 7 | | 120166 | 126 | 6 | 0.5 | 0 | 8 | | 120050 | 126 | 3 | 0.45 | 1 | 9 |******** | 120161 | 126 | 6 | 0.4 | 0 | 10 | | 120069 | 126 | 4 | 0.15 | 0 | 999 | | 120022 | 126 | 4 | 0.15 | 0 | 999 | | 120002 | 126 | 4 | 0.15 | 0 | 999 | | 120139 | 126 | 2 | 0 | 0 | 999 | | 120156 | 126 | 2 | 0 | 0 | 999 |
我真的很感激任何帮助。这几天一直在敲我的头。