【发布时间】:2017-04-17 22:48:01
【问题描述】:
select
d.DepartmentId,
d.Name,
d.GroupName,
eph.Rate * 40 * 52 * count(edh.EmployeeId) as AnnualPay
from
HumanResources.Department d,
HumanResources.EmployeePayHistory eph,
HumanResources.Employee e,
HumanResources.EmployeeDepartmentHistory edh
where
e.CurrentFlag = 'True' and
edh.DepartmentID = d.DepartmentID and
edh.EmployeeID = eph.EmployeeID and
e.EmployeeID = eph.EmployeeID
group by
d.departmentID;
我们的目标是编写一份报告,以显示部门ID、姓名、组名在该部门工作的所有员工的年薪总额以及在该部门工作的员工人数。
要计算annual pay,请将每个员工的工资率乘以一年中 52 周的 40 小时。
仅包括所有员工年薪总额超过half a million dollars 的部门。
所有员工都应该是最新的(使用 currentflag)。
按员工年薪总额降序排列报表。
表格都包括在内,我不知道如何按部门分组...Database
【问题讨论】:
-
我有很多关于你的问题的问题。我将不得不将它们分成多个 cmets。这是第一个:(1)你确定这是 MySQL 吗?数据库图是为 AdventureWorks 准备的,通常是 SQL-Server 的东西。它可以移植到 MySQL,所以你可能是对的。根据提供的答案的复杂程度,它可能不会产生任何可能性。
-
和其他人:(2)我不知道 AdventureWorks 的数据,但从图表上看,可能有员工没有每周领薪,但您的
* 52似乎假设每个人都有薪水每周。 (3)虽然您正在处理使用CurrentFlag离开的员工,但我认为您可能还需要处理在 EmployeeDepartmentHistory 中有多个条目的员工(已移动部门或换班的员工)和在 EmployeePayHistory 中有多个条目的员工(那些他们的工资发生了变化)。 -
如果您关心问题 (2) 和 (3) 中的一个或两个,我建议您首先创建一个查询,该查询返回每个员工的正确当前数据,确保您没有有任何员工在那里两次。一旦到位,然后担心总结每个部门的所有薪水。
-
一名员工可以同时属于多个部门吗?