mysql - SQL 帮助,按另一个表分组

标签 mysql sql

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、名称、组名、在该部门工作的所有员工的年薪总额以及在该部门工作的员 worker 数。

要计算年薪,请将每位员工的工资乘以一年中 52 周的 40 小时

仅包含所有员工年薪总额超过50万美元的部门。

所有员工都应该是当前员工(使用 currentflag)。

按员工年薪总额降序对报表进行排序。

表格已包含在内,我不知道如何按每个部门进行分组... Database

最佳答案

如果我明白你在寻找什么,这应该有效:

SELECT 
    d.DepartmentId, 
    d.Name, 
    d.GroupName,
    SUM(eph.Rate * 40 * 52) as AnnualPay,
    Count(edh.EmployeeId) as EmployeeCount
from HumanResources.Department d 
JOIN HumanResources.EmployeeDepartmentHistory edh
ON edh.DepartmentID = d.DepartmentID
JOIN HumanResources.EmployeePayHistory eph
ON edh.EmployeeID = eph.EmployeeID
JOIN HumanResources.Employee e
ON e.EmployeeID = eph.EmployeeID
WHERE e.CurrentFlag = 'True' 
GROUP BY d.departmentID,d.Name,d.GroupName
HAVING AnnualPay > 500000
ORDER BY AnnualPay DESC;

关于mysql - SQL 帮助,按另一个表分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43422526/

相关文章:

mysql - 一个简单的选择返回一个空表

php - 使用 WP_User_Query 搜索名字和姓氏

sql - 如何编写查询以确保电子邮件包含@

mysql - 添加外键时报错 'Table ' .\schema\table' already exists

sql - 棘手的 Postgresql 查询

sql - 创建具有 "either or"类型字段的数据库表

mysql - 如何在 MySQL JSON_CONTAINS 中使用 PDO bindParam?

php - 子节点名称未知时提取xml数据

MySQL 查询按两个字段排序

mysql - SQL ORDER BY 具有动态多个值的特定序列?