【发布时间】:2021-07-26 07:02:21
【问题描述】:
我有一个表,其中包含与员工相关的职位数据。一名员工可能有多个在职职位,并且可以通过设置适用的百分比来定义拆分。职位有开始日期和结束日期。默认结束日期为 2099,这意味着尚未指定结束日期(正在进行中)。
数据是通过 ERP 系统输入的,在给定的日期范围内有可能超过 100%。
我想构建一个查询来总结每家公司中有多少员工的职位百分比分配超过 100%。仅适用于在职员工。
我在 Fiddle 中汇总了一些示例数据来说明这一点 - http://sqlfiddle.com/#!18/0e36d9
编辑:这是一些示例数据:
| status | company | EmpId | PositionCode | PositionPerc | Date_From | Date_To |
|---|---|---|---|---|---|---|
| ACTIVE | EN | 1234 | 001 | 100 | 2012-06-12T00:00:00Z | 2021-01-12T00:00:00Z |
| ACTIVE | EN | 1234 | 002 | 100 | 2021-01-13T00:00:00Z | 2099-12-31T00:00:00Z |
| ACTIVE | EN | 4321 | 001 | 80 | 2019-06-17T00:00:00Z | 2099-12-31T00:00:00Z |
| ACTIVE | EN | 4321 | 003 | 30 | 2021-03-10T00:00:00Z | 2099-12-31T00:00:00Z |
| ACTIVE | EN | 7811 | 002 | 100 | 2019-06-17T00:00:00Z | 2020-11-12T00:00:00Z |
| ACTIVE | NO | 2234 | 002 | 50 | 2019-06-17T00:00:00Z | 2099-12-31T00:00:00Z |
| ACTIVE | NO | 2234 | 005 | 50 | 2020-02-21T00:00:00Z | 2099-12-31T00:00:00Z |
| ACTIVE | GB | 4121 | 001 | 100 | 2021-01-17T00:00:00Z | 2099-12-31T00:00:00Z |
| ACTIVE | GB | 4121 | 006 | 100 | 2021-04-17T00:00:00Z | 2099-12-31T00:00:00Z |
| ACTIVE | EN | 5551 | 001 | 50 | 2015-06-17T00:00:00Z | 2099-12-31T00:00:00Z |
| ACTIVE | EN | 5551 | 003 | 60 | 2021-03-10T00:00:00Z | 2099-12-31T00:00:00Z |
我正在尝试像这样取回数据:
| Company | Emps_that_exceed |
|---|---|
| EN | 2 |
| NO | 0 |
| GB | 1 |
我非常感谢任何帮助。 我试图对此进行搜索,但我很难准确地描述它以获取任何有用的信息。
我知道这将是类似的东西
select client, SUM(select....) from positiondata group by client
我以前没有做过这样的查询。
【问题讨论】:
-
请确保您的问题是独立的,即包含小提琴的内容,以防小提琴出现故障。根据问题指南,请展示您尝试过的内容,并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。
标签: sql sql-server tsql