我有一张包含列的表格:
col1
(主键)编号col2
号码 - 包含少量重复项此表包含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
我的任务是将学生人数分成四人小组,但两组不应该有同等级别的学生
答案 0 :(得分:0)
如果您只想为col2的分组中的每一行使用唯一编号,请尝试使用row_number()over(),如下所示:
row_number() over(partition by col2 order by col1) as group_number
将“分区依据”视为与“分组依据”类似,但返回每行而不是汇总。