将一个表中的行分配给其他表中的行,这些行的状态取决于状态与SQL oracle中的行数相等

时间:2019-03-05 04:37:36

标签: sql oracle plsql

我想编写一个查询,该查询会将记录从一个表分发到另一张表,该记录的状态数相同。

例如,我有两个表,学生教师,它们具有不同的课程(状态),并且我想将学生分配给不同课程的每位老师。

学生:

name
--------+
Adam    |
Bennet  |
Elmer   |
Justin  |
Louis   |
Noah    |
Jack    |

老师:

name     | coerces 
---------+---------
Leo      |  1
Kyle     |  1
Ethan    |  1
Leo      |  2
Kyle     |  2
Ethan    |  2

注意:

  1. 一个学生最多只能有一位老师。

  2. 课程1中的每个学生在课程2中必须有不同的老师。

  3. 每位老师的学生人数应与其他任何老师...

  4. ...除非学生人数不是教师人数的确切倍数,否则在这种情况下,必须尽可能平均地在教师之间分配学生。例如,如果我们有七个学生和三个老师,那么前两个老师将带两个学生,最后一个将带三个学生。

结果:

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中做到这一点?

0 个答案:

没有答案