【发布时间】:2018-07-27 17:43:32
【问题描述】:
我有一个数据集的快照如下:
effective_date hire_date name job_level direct_report
01.01.2018 01.01.2018 xyz 5 null
01.02.2018 01.01.2018 xyz 5 null
01.03.2018 01.01.2018 xyz 5 null
01.04.2018 01.01.2018 xyz 6 null
01.05.2018 01.01.2018 xyz 6 null
01.01.2018 01.02.2018 abc 5 null
01.02.2018 01.02.2018 abc 5 null
01.03.2018 01.02.2018 abc 5 null
01.04.2018 01.02.2018 abc 5 null
01.05.2018 01.02.2018 abc 5 null
- 生效日期是每个员工每天的信息概览 基础。
- 雇用日期是雇员被雇用的日期
- 工作级别是员工在特定日期所处的级别
我想了解在这段时间内有多少员工从第 5 级调动/提升到第 6 级?
【问题讨论】:
-
你已经尝试了什么?
-
到目前为止,您是否尝试过任何查询?如果有,请提供。我们很乐意帮助您学习,但 SO 不是代码编写服务。
-
另外,标记您的 DBMS。语法差异会改变答案。 sql 服务器?mysql?甲骨文?使用权? db2?
-
您需要查看 OVER 和 PARTITION。您可以通过简单的查询 WHERE job_level = 6 获得所有级别为 6 的用户,但它会给您多个结果。 OVER 和 PARTITION 将允许您对这些行进行排名,以便您可以获得用户第 6 级的第一天(逻辑上当他们被提升时)。只需在谷歌上搜索“ms sql over partition by example”这个短语,然后找到最适合您的示例。
-
实际上,我只是注意到您想统计有多少人晋升为 6,而不是查看他们何时晋升。很抱歉,但我希望它仍然可以帮助你。