DistributionStatsMinidaoDao_ComDistributionStatsData.sql 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. SELECT e.postid,peopleNum ,IFNULL(CONVERT(peopleNum/comTotal*100,decimal(16,2)),0) proportion ,:param.yearmonth yearmonth from (
  2. SELECT in_postid postid ,COUNT(*) peopleNum,
  3. (
  4. SELECT COUNT(*) as comToal
  5. from t_bus_user_personnel up
  6. LEFT JOIN t_bus_post bp
  7. ON up.in_postid = bp.id
  8. LEFT JOIN
  9. (
  10. SELECT userid,MAX(create_date) leave_date from t_bus_leave
  11. WHERE delete_flag = 0
  12. GROUP BY userid
  13. ) l
  14. ON l.userid = up.userid
  15. LEFT JOIN t_s_base_user u
  16. ON up.userid = u.ID
  17. WHERE (up.position_status = 1 or up.position_status = 2 or up.position_status = 3) and up.contract_stime <= :param.endmonth and (l.leave_date is null or l.leave_date >= :param.earlymonth ) and up.in_postid !='' and u.delete_flag =0
  18. ) comTotal
  19. from t_bus_user_personnel bup
  20. LEFT JOIN t_bus_post bp
  21. ON bup.in_postid = bp.id
  22. LEFT JOIN
  23. (
  24. SELECT userid,MAX(create_date) leave_date from t_bus_leave
  25. WHERE delete_flag = 0
  26. GROUP BY userid
  27. ) l
  28. ON l.userid = bup.userid
  29. LEFT JOIN t_s_base_user u
  30. ON bup.userid = u.ID
  31. WHERE (bup.position_status = 1 or bup.position_status = 2 or bup.position_status = 3) and bup.contract_stime <= :param.endmonth and (l.leave_date is null or l.leave_date >= :param.earlymonth ) and bup.in_postid !='' and u.delete_flag =0
  32. GROUP BY in_postid
  33. )e