-1

我有一个包含列的表格:

  • col1(主键)数字
  • col2number - 包含少量重复项

该表包含 600 条记录。我正在尝试构建一个查询,用户可以在其中提供任何组计数(组中的最大记录数。例如:11)。结果将是具有组号的总记录。这里相同的数据col2不应该在两个不同的组中。

示例——考虑这个查询:

select col1, col2, round(rownum-1 /: group_size) as group_number from group_tester;

此查询将给出组号,但我发现很少有具有相同数据的记录落入不同的组。

有什么方法可以解决我的分析函数问题吗?


这是一个数据样本和预期结果

数据样本

col1(student id)                          col2(student Rank)
1                                                3
2                                                3
3                                                7
4                                                3
5                                                2
6                                                1
7                                                5
8                                                5
9                                                4
10                                               6
11                                               9
12                                               8

如果组大小为 4,我希望结果如下

预期结果

col1(student id)    col2(student Rank)          group number
1                          3                          2
2                          3                          2
3                          7                          2
4                          3                          2
5                          2                          1
6                          1                          1
7                          5                          3
8                          5                          3
9                          4                          1
10                         6                          1
11                         9                          3
12                         8                          3

我的任务是将学生人数分成四组,但两组不应有相同排名的学生

4

1 回答 1

0

如果您只想为 col2 分组中的每一行设置一个唯一编号,请尝试使用 row_number() over(),如下所示:

row_number() over(partition by col2 order by col1) as group_number 

将“partition by”视为类似于“group by”,但返回每一行而不是汇总。

于 2017-05-22T03:32:02.573 回答