您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

我想将一个表中的行分配给另一表中的行,这在SQL oracle中可以采用相等数量的行

我想将一个表中的行分配给另一表中的行,这在SQL oracle中可以采用相等数量的行

这不一定会按照您希望的顺序分配教师,但是仍然会按照您希望的比例分配。它使用该NTILE函数名称放入存储桶中,并为每行分配适当的存储桶编号。

如果您想下订单,则必须为教师和学生提供一个唯一的ID列。

with tch as
(
 select t.*, row_number() OVER ( ORDER BY name ) as n from teachers t
 ),
ct AS
 ( 
  select count(*) as cnt from Teachers
  )
 select s.name as student,tch.name as teacher from
 (

     SELECT name, NTILE(cnt) OVER (partition by cnt ORDER BY name)  AS n 
         FROM Students cross join
       ct
) s join tch on tch.n = s.n;

 Student| Teacher 
 -----  | ----
 Adam   | Ethan
 Bennet | Ethan
 Elmer  | Ethan
 Jack   | Kyle 
 Justin | Kyle 
 Louis  | Leo  
 Noah   | Leo
SQLServer 2022/1/1 18:51:09 有566人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶