计算员工的月薪

时间:2014-06-03 18:52:32

标签: sql ms-access

我正在使用MS Access 2010中的数据库

和我需要构建一个查询来计算每个员工的月薪

它是这样的:

  1. 来自用户的输入,哪一年
  2. 再次从用户输入,哪个月
  3. 显示输入日期的每个员工的工资
  4. 查询中有2个表:ShiftsEmployees

    班次的字段为EmployeeID,字段为Day

    日期字段格式为:短日期

    问题是我不知道如何访问月份和年份!

    我知道这是完全错误的,但我想做这样的事情:

            SELECT 
    FROM EmployeesTBL INNER JOIN ShiftsTBL ON EmployeesTBL.EmployeeID = ShiftsTBL.EmployeeID
    WHERE 
    Year(ShiftsTBL.Day)=[Enter Year]
    AND 
    Month(ShiftsTBL.Day)=[Enter Month]
    ;
    

    在SELECT之后我需要写什么来获得所有移位的总和并将其除以emp工作的天数

    注意:在班次表中,每班次都有EntryDateExitDate

1 个答案:

答案 0 :(得分:2)

Access有一堆内置日期功能。我相信月(日期)和年(日期)将为您提供所需。

这样的东西
SELECT EmpName
FROM Employees, Shifts
WHERE Employees.EmployeeID = Shifts.EmployeeID
AND
Month(Shifts.Day) = INPUT2.VALUE
AND
Year(Shifts.Day) = INPUT1.VALUE

应该得到你想要的东西!

编辑:聚合:这是如何工作的将取决于您的数据库的设置方式。我想我明白你想要总结工作时间并除以天数?

如果是这样,您将使用Sum()和Count()。您将按员工ID分组

SELECT Sum(Shifts)/Count(DaysWorked) AS SumDividedByCount
FROM EmployeesTBL INNER JOIN ShiftsTBL 
 ON EmployeesTBL.EmployeeID = ShiftsTBL.EmployeeID
WHERE 
  Year(ShiftsTBL.[Day])=[Enter Year]
AND 
   Month(ShiftsTBL.[Day])=[Enter Month]
GROUP BY EmployeeID

我使用了WHERE子句,因为我认为结果需要在分组之前进行过滤。如果结果需要在分组后进行过滤,则会使用HAVING子句(并且会在GROUP BY之后进行)