我想编写一个查询,该查询会将记录从一个表分发到另一张表,该记录的状态数相同。
例如,我有两个表,学生和教师,它们具有不同的课程(状态),并且我想将学生分配给不同课程的每位老师。
学生:
name
--------+
Adam |
Bennet |
Elmer |
Justin |
Louis |
Noah |
Jack |
老师:
name | coerces
---------+---------
Leo | 1
Kyle | 1
Ethan | 1
Leo | 2
Kyle | 2
Ethan | 2
注意:
一个学生最多只能有一位老师。
课程1中的每个学生在课程2中必须有不同的老师。
每位老师的学生人数应与其他任何老师...
...除非学生人数不是教师人数的确切倍数,否则在这种情况下,必须尽可能平均地在教师之间分配学生。例如,如果我们有七个学生和三个老师,那么前两个老师将带两个学生,最后一个将带三个学生。
结果:
Student | Teacher | coerces
--------+---------+---------
Adam | Leo | 1
Bennet | Leo | 1
Elmer | Kyle | 1
Justin | Kyle | 1
Louis | Ethan | 1
Noah | Ethan | 1
Jack | Ethan | 1
Louis | Leo | 2
Noah | Leo | 2
Jack | Kyle | 2
Adam | Kyle | 2
Bennet | Ethan | 2
Elmer | Ethan | 2
Justin | Ethan | 2
如何在Oracle SQL中做到这一点?