【问题标题】:counting employee attendance计算员工出勤率
【发布时间】:2011-01-27 16:02:34
【问题描述】:

我正在尝试编写一份用于计算员工出勤率的声明,并执行他们的 idname 以及他过去 3 个月的工作天数,方法是计算 NewTimeAttendance 上的重复 id 一个月1、2 和 3。

我试着数数:

Select COUNT(employeeid)
  from NewTimeAttendance
 where employeeid=1 and (month=1 or month = 2 or month = 3)

这绝对有效,但仅适用于一名员工。

第二次尝试:

SELECT COUNT(NewEmployee.EmployeeID)
  FROM NewEmployee INNER JOIN NewTimeAttendance 
    ON NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID
   and (month=1 or month =2 or month = 3)

这是有效的,但它计算所有员工,我希望它执行每个 EmployeeIdEmployeeNamenumber of days 作为新记录。

最后一次尝试:(在你看到代码之前......这是错误的......但我正在尝试)

for i in  0..27 loop
   SELECT COUNT(NewEmployee.EmployeeID),NewEmployee.EmployeeId,EmployeeName
     FROM NewEmployee INNER JOIN NewTimeAttendance 
       ON NewEmployee.EmployeeID(i) = NewTimeAttendance.EmployeeID
      and (month=1 or month =2 or month = 3)
end loop

我真的需要帮助...在此先感谢。

【问题讨论】:

    标签: sql count


    【解决方案1】:

    你需要一个GROUP BY函数,试试:

    SELECT COUNT(NewEmployee.EmployeeID), NewEmployee.EmployeeId,EmployeeName
     FROM NewEmployee INNER JOIN NewTimeAttendance 
      ON NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID
       and (month=1 or month =2 or month = 3)
    GROUP BY NewEmployee.EmployeeID, EmployeeName
    

    【讨论】:

    • 我认为您还需要将 EmployeeName 放入您的 groupBy 语句中。
    • @Paddy,谢谢你是正确的。我已经相应地更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多