栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我想将一个表中的行分配给另一表中的行,这在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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517244.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号