oracle-sqldeveloper - 获取 ORACLE SQL 开发人员中单个员工的总出勤率
问题描述
INSERT INTO COD_HRM_ADVICED_MONTH_DETAIL
(EMPLOYEE_ID,MONTH_ID,TOTAL_PRESENT,TOTAL_ABSENT,TOTAL_LEAVE,ACTION_ON,ACTION_BY,ACTION_TYPE,PROJECT_ID,COMPANY_ID)
SELECT A.EMPLOYEE_ID,'25',
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='P' AND to_char(ATTENDANCE_DATE, 'mm')='08'
AND to_char(ATTENDANCE_DATE, 'yy')='21'
AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS PRESENT,
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='A' AND to_char(ATTENDANCE_DATE, 'mm')='08'
AND to_char(ATTENDANCE_DATE, 'yy')='21'
AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS ABSENT,
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='L' AND to_char(ATTENDANCE_DATE, 'mm')='' AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS LEAVE,
'10-Aug-21','1','Insert','4','2'
FROM COD_HRM_ATTENDANCE A GROUP BY EMPLOYEE_ID
我得到了所有目前缺勤和离开员工的详细信息,现在我想对每个员工的这些列求和。
1:
解决方案
SELECT A.EMPLOYEE_ID,
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='P' AND to_char(ATTENDANCE_DATE, 'mm')='08'
AND to_char(ATTENDANCE_DATE, 'yy')='21'
AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS PRESENT,
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='A' AND to_char(ATTENDANCE_DATE, 'mm')='08'
AND to_char(ATTENDANCE_DATE, 'yy')='21'
AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS ABSENT,
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='L' AND to_char(ATTENDANCE_DATE, 'mm')='08' AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS LEAVE
,(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE to_char(ATTENDANCE_DATE, 'mm')='08' AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS TOTAL
FROM COD_HRM_ATTENDANCE A GROUP BY EMPLOYEE_ID
我通过全部计数解决了这个问题,没有给出任何出勤类型
推荐阅读
- c# - C++ 创建 NdisProt 驱动程序的句柄
- ms-access - 在 Ms Access 中创建复合外键
- java - 如何理解有关二进制数的代码的功能?
- elasticsearch - 弹性搜索存储:如何获取_source下的字段名列表?
- ios - StoryBoard / Interface Builder中NSObject的功能是什么?
- python - 美丽的汤模块错误(html解析器)
- python - __getattr__ 上的异常子类
- python - Flask 应用程序部署到 heroku,与 buildpack 不兼容
- python - 透视 groupby (月和小时)日期时间列
- android - 在可绘制对象之外绘制背景