2

各位晚上好,

我正在使用 OBIEE,我正在尝试提取包含一些候选人信息的文件以保存在我们的记录中,因为我的组织将需要尽快删除大部分数据。

我有与招聘相关的数据,这些数据是人们在申请职位空缺时提出的。

我试图在每个申请中为每位候选人设置一行(即,如果候选人申请了 2 个不同的工作,它将计为 2 行),并插入最高学历、相关机构、他们最近的职位和最最近的雇主名称。

我有这些事实:

ID、学位类型、机构、职位、雇主。

他们都有开始日期和毕业日期。

当我提取报告时,我得到如下信息:

ID 学位类型 机构 职称 雇主
001 博士学位 大学。一个 食者 谷歌
001 硕士 大学。乙 轨枕 三星
001 其他 大学。一个 跳线 苹果
002 学士 大学。C 快板 花生酱
002 硕士 大学。D 有点东西 富士通
002 博士学位 大学。一个 有点东西 富士通
003 其他 大学。乙 食者 欧盟
003 博士学位 大学。Z 间谍 联合国

如您所见,每个人的教育水平可能不同,也可能没有,当我提取此分析时,我有一个包含多行的 ID,与每个学位和每个工作经验一样多,按时间顺序排序。

这会产生一些可读性问题。此外,我们只想要最高学历和最近的工作。

所以像这样。

ID 学位类型 机构 职称 雇主
001 博士学位 大学。一个 食者 谷歌
002 博士学位 大学。一个 有点东西 富士通
003 博士学位 大学。Z 食者 欧盟

相反,当我尝试应用过滤器或步骤时,我只能设法获得基于任何一个的结果

A)最近的学位和最近的雇主,或 B)在学位的同一时间段内进行的每个学位和每个工作经验。

选项 A 因多种原因不起作用,例如,如果某人在获得博士学位后获得认证,我将有一个人有“其他”,而他们应该有“博士学位”

选项 B 目前没有用,因为我们只想要一行。此外,如果我在获得学位后工作,则不会出现工作经验,因为它仅显示学习期间所做的工作。

我是 OBIEE 新手,对 SQL 不熟悉。我通常使用 R,并且出于完全不同的原因。

如果我可以为每个学位分配一个值,然后按最高值进行过滤(例如,如果有博士学位,则显示并停止。否则显示硕士。如果没有硕士和博士学位,则显示学士学位并停止。)然后按日期添加工作经验,那就太好了。

有没有办法做到这一点?

太感谢了!如果没有任何意义,请道歉。

PS> 我已经看到这个回复了How To Get Higher Education Using MySQL?

但是那个人每个学位都有多个列,而我一共拥有它们。

4

1 回答 1

1

我假设 OBIEE 只是一个数据库,您可以使用 SQL 来获取信息。

我还假设您提供的 ID 列代表每个员工的唯一 ID。

您的任务需要中级(如果不是高级)SQL 技术来解决。以下是步骤。

  1. 您需要对学位级别的排序顺序进行编码 - 在 3NF(第三范式)中,您将添加一个参考表来存储每个学位的一行,并包含 degree_name varchar 列(主键)以等于您在帖子中列出的值,但是另一个列 degree_sort integer 以您想要的方式对度数进行排序。您将在 varchar 值上加入此表并返回 degree_sort 值

  2. 处理关系:另一个复杂性是如何处理员工在博士学位(我认为这是最高的)教育水平上拥有多项工作的可能性 - 你需要一个“start_date”或一些数据点来打破关系。

这是一个解释类似场景的堆栈帖子,获取代表文档最新修订的记录(修订是您的学位级别,文档是您的员工 ID): https ://stackoverflow.com/a/38854846/1279373

您的分区条款将是:

PARTITION BY id ORDER BY degree_sort DESC, start_date DESC

注意:where 子句(参见参考答案中的 sql)处理“仅返回排名为 1 的行”;在 ORDER BY 子句中使用 ASC(升序)和 DESC(降序)对“从低到高”或“从高到低”进行排名。

于 2021-10-01T14:58:21.837 回答