| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- -- ============================================================
- -- 就业状态自动感知 - 视图SQL(达梦DM8)
- -- ============================================================
- -- ============================================================
- -- 视图1:企业就业状态感知视图
- -- 聚合企业信息 + 岗位信息
- -- ============================================================
- CREATE OR REPLACE VIEW V_ENTERPRISE_EMPLOYMENT_STATUS AS
- SELECT
- ei.ID,
- ei.UNIFIED_CREDIT_CODE,
- ei.COMPANY_NAME,
- ei.REG_ADDR_DISTRICT AS DISTRICT,
- ei.INDUSTRY,
- ei.STAFF_SIZE AS ENTERPRISE_SCALE,
- ei.BUSINESS_STATUS AS ENTERPRISE_STATUS,
- (SELECT COUNT(*) FROM POST_INFO pi WHERE pi.ENTERPRISE_ID = ei.ID) AS TOTAL_POST_COUNT,
- (SELECT COUNT(*) FROM POST_INFO pi WHERE pi.ENTERPRISE_ID = ei.ID
- AND (pi.POST_VALID_DATE IS NULL OR pi.POST_VALID_DATE >= SYSDATE)) AS ACTIVE_POST_COUNT,
- (SELECT COUNT(*) FROM POST_INFO pi WHERE pi.ENTERPRISE_ID = ei.ID
- AND pi.POST_VALID_DATE IS NOT NULL AND pi.POST_VALID_DATE < SYSDATE) AS EXPIRED_POST_COUNT,
- NULL AS REGISTERED_EMPLOYEE_COUNT,
- (SELECT AVG((pi2.SALARY_MIN + pi2.SALARY_MAX) / 2) FROM POST_INFO pi2
- WHERE pi2.ENTERPRISE_ID = ei.ID
- AND (pi2.POST_VALID_DATE IS NULL OR pi2.POST_VALID_DATE >= SYSDATE)
- AND pi2.SALARY_MIN IS NOT NULL AND pi2.SALARY_MAX IS NOT NULL) AS AVERAGE_SALARY,
- esl.CUSTOM_TAGS,
- esl.LAST_NOTICE_TIME,
- ei.CREATE_BY,
- ei.CREATE_TIME,
- ei.UPDATE_BY,
- ei.UPDATE_TIME,
- ei.SYS_ORG_CODE
- FROM ENTERPRISE_INFO ei
- LEFT JOIN ENTERPRISE_STATUS_LOCAL esl ON ei.ID = esl.ENTERPRISE_ID;
- COMMENT ON VIEW V_ENTERPRISE_EMPLOYMENT_STATUS IS '企业就业状态感知视图';
- -- ============================================================
- -- 视图2:个人就业状态感知视图
- -- 聚合个人信息 + 就业/失业登记统计
- -- ============================================================
- CREATE OR REPLACE VIEW V_PERSONAL_EMPLOYMENT_STATUS AS
- SELECT
- pi.ID,
- pi.ID_NUMBER,
- pi.FULL_NAME,
- pi.HOUSEHOLD_LOCATION AS HOUSEHOLD_DISTRICT,
- pi.GENDER,
- pi.EDUCATION,
- FLOOR(MONTHS_BETWEEN(SYSDATE, pi.BIRTH_DATE) / 12) AS AGE,
- pi.JOB_SEARCH_STATUS,
- CASE
- WHEN er.PERSONAL_ID IS NOT NULL AND er.EMPLOY_COUNT > 0 THEN '就业中'
- WHEN ur.PERSONAL_ID IS NOT NULL AND ur.UNEMPLOY_COUNT > 0 THEN '失业中'
- ELSE '未就业'
- END AS EMPLOYMENT_STATUS,
- NVL(er.EMPLOY_COUNT, 0) AS EMPLOY_REG_COUNT,
- NVL(ur.UNEMPLOY_COUNT, 0) AS UNEMPLOY_REG_COUNT,
- NULL AS SOCIAL_INSURANCE_STATUS,
- psl.CUSTOM_TAGS,
- psl.LAST_NOTICE_TIME,
- pi.CREATE_BY,
- pi.CREATE_TIME,
- pi.UPDATE_BY,
- pi.UPDATE_TIME,
- pi.SYS_ORG_CODE
- FROM PERSONAL_INFO pi
- LEFT JOIN PERSONAL_STATUS_LOCAL psl ON pi.ID = psl.PERSONAL_ID
- LEFT JOIN (
- SELECT PERSONAL_ID, COUNT(*) AS EMPLOY_COUNT
- FROM EMPLOYMENT_RECORD
- GROUP BY PERSONAL_ID
- ) er ON pi.ID = er.PERSONAL_ID
- LEFT JOIN (
- SELECT PERSONAL_ID, COUNT(*) AS UNEMPLOY_COUNT
- FROM UNEMPLOYMENT_RECORD
- GROUP BY PERSONAL_ID
- ) ur ON pi.ID = ur.PERSONAL_ID;
- COMMENT ON VIEW V_PERSONAL_EMPLOYMENT_STATUS IS '个人就业状态感知视图';
|