AttendanceStatsMinidaoDao_pojAttendanceStatsData.sql 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. SELECT pjtId,yearmonth,pmId,
  2. datumWorkDuration-AdatumDatem+BdatumDate datumWorkDuration,
  3. attendanceDuration-Aattendance_mins+Battendance_mins attendanceDuration,
  4. convert((attendanceDuration-Aattendance_mins+Battendance_mins)/(datumWorkDuration-AdatumDatem+BdatumDate)*100,decimal(10,2)) attendanceRate
  5. FROM
  6. (
  7. SELECT uat.*,
  8. (
  9. SELECT IFNULL(SUM(datum_date),0) from t_bus_user_attendance_detail WHERE borrowstatus ='1' and borrowspid = uat.pjtId and DATE_FORMAT(ymd_date,"%Y-%m")=:yearmonth
  10. ) BdatumDate,
  11. (
  12. SELECT IFNULL(SUM(actualattendance_date),0) from t_bus_user_attendance_detail WHERE borrowstatus ='1' and borrowspid = uat.pjtId and DATE_FORMAT(ymd_date,"%Y-%m")=:yearmonth
  13. ) Battendance_mins
  14. FROM
  15. (
  16. SELECT pid pjtId,yearmonth,pmId,
  17. SUM(datum_attendance_date) datumWorkDuration,
  18. SUM(actual_attendance_date) attendanceDuration,SUM(AdatumDate) AdatumDatem,SUM(Aattendance_mins) Aattendance_mins
  19. from
  20. (
  21. SELECT uat.*,
  22. (
  23. SELECT IFNULL(SUM(datum_date),0) from t_bus_user_attendance_detail WHERE attendance_id=uat.id and borrowstatus ='1'
  24. ) AdatumDate,
  25. (
  26. SELECT IFNULL(SUM(actualattendance_date),0) from t_bus_user_attendance_detail WHERE attendance_id=uat.id and borrowstatus ='1'
  27. ) Aattendance_mins
  28. FROM(
  29. SELECT uat.id,uat.user_id,uat.pid,uat.departid,uat.yearmonth,uat.datum_attendance_date,uat.actual_attendance_date,d.dept_proj_managerid pmId
  30. from t_bus_user_attendance_total uat
  31. LEFT JOIN t_s_depart d
  32. ON uat.pid = d.ID
  33. ) uat
  34. WHERE uat.yearmonth =:yearmonth AND uat.pid != ''
  35. ) a
  36. GROUP BY pid
  37. ) uat
  38. )re
  39. order by attendanceRate asc