total_registered.driver_license Normal 0 / ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID TRANSNAME Y TRANSNAME STATUS Y STATUS LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS STARTDATE Y STARTDATE ENDDATE Y ENDDATE LOGDATE Y LOGDATE DEPDATE Y DEPDATE REPLAYDATE Y REPLAYDATE LOG_FIELD Y LOG_FIELD EXECUTING_SERVER N EXECUTING_SERVER EXECUTING_USER N EXECUTING_USER CLIENT N CLIENT
ID_BATCH Y ID_BATCH SEQ_NR Y SEQ_NR LOGDATE Y LOGDATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS INPUT_BUFFER_ROWS Y INPUT_BUFFER_ROWS OUTPUT_BUFFER_ROWS Y OUTPUT_BUFFER_ROWS
ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE LOGGING_OBJECT_TYPE Y LOGGING_OBJECT_TYPE OBJECT_NAME Y OBJECT_NAME OBJECT_COPY Y OBJECT_COPY REPOSITORY_DIRECTORY Y REPOSITORY_DIRECTORY FILENAME Y FILENAME OBJECT_ID Y OBJECT_ID OBJECT_REVISION Y OBJECT_REVISION PARENT_CHANNEL_ID Y PARENT_CHANNEL_ID ROOT_CHANNEL_ID Y ROOT_CHANNEL_ID
ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS LOG_FIELD N LOG_FIELD
ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE METRICS_DATE Y METRICS_DATE METRICS_CODE Y METRICS_CODE METRICS_DESCRIPTION Y METRICS_DESCRIPTION METRICS_SUBJECT Y METRICS_SUBJECT METRICS_TYPE Y METRICS_TYPE METRICS_VALUE Y METRICS_VALUE
0.0 0.0 10000 50 50 N Y 50000 Y N 1000 100 local localhost 8888 cluster Encrypted 2be98afc86aa7f2e4cb1aa265cd86aac8 Y N - 2024/08/02 11:56:22.507 - 2024/08/02 11:56:22.507 H4sIAAAAAAAAAAMAAAAAAAAAAAA= N ervu-dashboard dashboard-dbhost POSTGRESQL Native dashboard-dbname 1111 dashboard-dbuser Encrypted 2daf9dca008c89396af54aa72ce93bcc9 EXTRA_OPTION_POSTGRESQL.stringtype unspecified FORCE_IDENTIFIERS_TO_LOWERCASE N FORCE_IDENTIFIERS_TO_UPPERCASE N IS_CLUSTERED N PORT_NUMBER 1111 PRESERVE_RESERVED_WORD_CASE Y QUOTE_ALL_FIELDS N SUPPORTS_BOOLEAN_DATA_TYPE N SUPPORTS_TIMESTAMP_DATA_TYPE N USE_POOLING N postgres.person_registry person-dbhost POSTGRESQL Native person-dbname 4444 person-dbuser Encrypted 2be98afb80fd5818ba554aa72ce93bcc9 FORCE_IDENTIFIERS_TO_LOWERCASE N FORCE_IDENTIFIERS_TO_UPPERCASE N IS_CLUSTERED N PORT_NUMBER 4444 PRESERVE_RESERVED_WORD_CASE Y QUOTE_ALL_FIELDS N SUPPORTS_BOOLEAN_DATA_TYPE N SUPPORTS_TIMESTAMP_DATA_TYPE N USE_POOLING N Table input (person_registry) РФ/женщины Insert / update (total_registered.driver_license) 2 2 2 N Table input (person_registry) РФ/мужчины Insert / update (total_registered.driver_license) 2 2 N Table input (person_registry) РФ/все Insert / update (total_registered.driver_license) 2 N Get variables 3 2 2 Select values 3 2 2 Y Get variables 3 2 2 2 Select values 3 2 2 2 Y Get variables 3 2 2 3 Select values 3 2 2 3 Y Table input (person_registry) РФ/женщины Get variables 3 2 2 3 Y Select values 3 2 2 3 Insert / update (total_registered.driver_license) 2 2 2 Y Table input (person_registry) РФ/мужчины Get variables 3 2 2 2 Y Select values 3 2 2 2 Insert / update (total_registered.driver_license) 2 2 Y Table input (person_registry) РФ/все Get variables 3 2 2 Y Select values 3 2 2 Insert / update (total_registered.driver_license) 2 Y Get variables 3 2 2 GetVariable Y 1 none REG_ID String -1 -1 none VK_ARRAY String -1 -1 none 704 160 Y Get variables 3 2 2 2 GetVariable Y 1 none REG_ID String -1 -1 none VK_ARRAY String -1 -1 none 704 288 Y Get variables 3 2 2 3 GetVariable Y 1 none REG_ID String -1 -1 none VK_ARRAY String -1 -1 none 704 432 Y Insert / update (total_registered.driver_license) 2 InsertUpdate Y 1 none ervu-dashboard 100 Y total_registered
driver_license
REG_ID recruitment_id = gender "all_M_W" = "A" a Y "B" b Y "C" c Y "D" d Y "E" e Y nope nope Y "A_repcent" a_percent Y "B_repcent" b_percent Y "C_repcent" c_percent Y "D_repcent" d_percent Y "E_repcent" e_percent Y "all_M_W" gender N recruitment_id recruitment_id N 1088 112 Y Insert / update (total_registered.driver_license) 2 2 InsertUpdate Y 1 none ervu-dashboard 100 Y total_registered driver_license
REG_ID recruitment_id = gender "all_M_W" = "A" a Y "B" b Y "C" c Y "D" d Y "E" e Y nope nope Y "A_repcent" a_percent Y "B_repcent" b_percent Y "C_repcent" c_percent Y "D_repcent" d_percent Y "E_repcent" e_percent Y "all_M_W" gender N recruitment_id recruitment_id N
1088 240 Y
Insert / update (total_registered.driver_license) 2 2 2 InsertUpdate Y 1 none ervu-dashboard 100 Y total_registered driver_license
REG_ID recruitment_id = gender "all_M_W" = "A" a Y "B" b Y "C" c Y "D" d Y "E" e Y nope nope Y "A_repcent" a_percent Y "B_repcent" b_percent Y "C_repcent" c_percent Y "D_repcent" d_percent Y "E_repcent" e_percent Y "all_M_W" gender N recruitment_id recruitment_id N
1088 384 Y
Select values 3 2 2 SelectValues Y 1 none N REG_ID REG_ID String -2 -2 false false VK_ARRAY VK_ARRAY String -2 -2 false false 848 160 Y Select values 3 2 2 2 SelectValues Y 1 none N REG_ID REG_ID String -2 -2 false false VK_ARRAY VK_ARRAY String -2 -2 false false 848 288 Y Select values 3 2 2 3 SelectValues Y 1 none N REG_ID REG_ID String -2 -2 false false VK_ARRAY VK_ARRAY String -2 -2 false false 848 432 Y Table input (person_registry) РФ/все TableInput Y 1 none postgres.person_registry WITH categorized AS ( SELECT r.id, r.gender, -- Проверяем наличие хотя бы одной категории, используем DISTINCT для уникальных рекрутов MAX(CASE WHEN cat->>'kategoriya' like '%A%' THEN 1 ELSE 0 END) AS has_A, MAX(CASE WHEN cat->>'kategoriya' like '%B%' THEN 1 ELSE 0 END) AS has_B, MAX(CASE WHEN cat->>'kategoriya' like '%C%' THEN 1 ELSE 0 END) AS has_C, MAX(CASE WHEN cat->>'kategoriya' like '%D%' THEN 1 ELSE 0 END) AS has_D, MAX(CASE WHEN cat->>'kategoriya' like '%E%' THEN 1 ELSE 0 END) AS has_E FROM public.recruits_info ri JOIN public.recruits r ON ri.recruit_id = r.id LEFT JOIN jsonb_array_elements(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') AS cat ON true WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' AND r.current_recruitment_id IS NOT NULL AND r.target_recruitment_id IS NOT NULL GROUP BY r.id, r.gender ), aggregated AS ( SELECT 'ALL' AS gender, '${REG_ID}' AS recruitment_id, -- Считаем количество уникальных рекрутов с каждой категорией COUNT(DISTINCT r.id) FILTER (WHERE has_A > 0) AS a, COUNT(DISTINCT r.id) FILTER (WHERE has_B > 0) AS b, COUNT(DISTINCT r.id) FILTER (WHERE has_C > 0) AS c, COUNT(DISTINCT r.id) FILTER (WHERE has_D > 0) AS d, COUNT(DISTINCT r.id) FILTER (WHERE has_E > 0) AS e, COUNT(DISTINCT r.id) FILTER (WHERE has_A = 0 AND has_B = 0 AND has_C = 0 AND has_D = 0 AND has_E = 0) AS nope, COUNT(DISTINCT r.id) AS total FROM categorized r ) SELECT *, ROUND((a * 100.0) / NULLIF(total, 0), 2) AS a_percent, ROUND((b * 100.0) / NULLIF(total, 0), 2) AS b_percent, ROUND((c * 100.0) / NULLIF(total, 0), 2) AS c_percent, ROUND((d * 100.0) / NULLIF(total, 0), 2) AS d_percent, ROUND((e * 100.0) / NULLIF(total, 0), 2) AS e_percent, ROUND((nope * 100.0) / NULLIF(total, 0), 2) AS nope_percent FROM aggregated; 0 N Y N 464 112 Y Table input (person_registry) РФ/женщины TableInput N 1 none postgres.person_registry WITH categorized AS ( SELECT r.id, r.gender, -- Проверяем наличие хотя бы одной категории, используем DISTINCT для уникальных рекрутов MAX(CASE WHEN cat->>'kategoriya' like '%A%' THEN 1 ELSE 0 END) AS has_A, MAX(CASE WHEN cat->>'kategoriya' like '%B%' THEN 1 ELSE 0 END) AS has_B, MAX(CASE WHEN cat->>'kategoriya' like '%C%' THEN 1 ELSE 0 END) AS has_C, MAX(CASE WHEN cat->>'kategoriya' like '%D%' THEN 1 ELSE 0 END) AS has_D, MAX(CASE WHEN cat->>'kategoriya' like '%E%' THEN 1 ELSE 0 END) AS has_E FROM public.recruits_info ri JOIN public.recruits r ON ri.recruit_id = r.id LEFT JOIN jsonb_array_elements(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') AS cat ON true WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' AND r.current_recruitment_id IS NOT NULL AND r.target_recruitment_id IS NOT NULL AND r.gender = 'FEMALE' GROUP BY r.id, r.gender ), aggregated AS ( SELECT 'W' AS gender, '${REG_ID}' as recruitment_id, -- Считаем количество уникальных рекрутов с каждой категорией COUNT(DISTINCT r.id) FILTER (WHERE has_A > 0) AS a, COUNT(DISTINCT r.id) FILTER (WHERE has_B > 0) AS b, COUNT(DISTINCT r.id) FILTER (WHERE has_C > 0) AS c, COUNT(DISTINCT r.id) FILTER (WHERE has_D > 0) AS d, COUNT(DISTINCT r.id) FILTER (WHERE has_E > 0) AS e, COUNT(DISTINCT r.id) FILTER (WHERE has_A = 0 AND has_B = 0 AND has_C = 0 AND has_D = 0 AND has_E = 0) AS nope, COUNT(DISTINCT r.id) AS total FROM categorized r ) SELECT *, ROUND((a * 100.0) / NULLIF(total, 0), 2) AS a_percent, ROUND((b * 100.0) / NULLIF(total, 0), 2) AS b_percent, ROUND((c * 100.0) / NULLIF(total, 0), 2) AS c_percent, ROUND((d * 100.0) / NULLIF(total, 0), 2) AS d_percent, ROUND((e * 100.0) / NULLIF(total, 0), 2) AS e_percent, ROUND((nope * 100.0) / NULLIF(total, 0), 2) AS nope_percent FROM aggregated; 0 N Y N 464 384 Y Table input (person_registry) РФ/мужчины TableInput Y 1 none postgres.person_registry WITH categorized AS ( SELECT r.id, r.gender, -- Проверяем наличие хотя бы одной категории, используем DISTINCT для уникальных рекрутов MAX(CASE WHEN cat->>'kategoriya' like '%A%' THEN 1 ELSE 0 END) AS has_A, MAX(CASE WHEN cat->>'kategoriya' like '%B%' THEN 1 ELSE 0 END) AS has_B, MAX(CASE WHEN cat->>'kategoriya' like '%C%' THEN 1 ELSE 0 END) AS has_C, MAX(CASE WHEN cat->>'kategoriya' like '%D%' THEN 1 ELSE 0 END) AS has_D, MAX(CASE WHEN cat->>'kategoriya' like '%E%' THEN 1 ELSE 0 END) AS has_E FROM public.recruits_info ri JOIN public.recruits r ON ri.recruit_id = r.id LEFT JOIN jsonb_array_elements(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') AS cat ON true WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' AND r.current_recruitment_id IS NOT NULL AND r.target_recruitment_id IS NOT NULL AND r.gender = 'MALE' GROUP BY r.id, r.gender ), aggregated AS ( SELECT 'M' AS gender, '${REG_ID}' as recruitment_id, -- Считаем количество уникальных рекрутов с каждой категорией COUNT(DISTINCT r.id) FILTER (WHERE has_A > 0) AS a, COUNT(DISTINCT r.id) FILTER (WHERE has_B > 0) AS b, COUNT(DISTINCT r.id) FILTER (WHERE has_C > 0) AS c, COUNT(DISTINCT r.id) FILTER (WHERE has_D > 0) AS d, COUNT(DISTINCT r.id) FILTER (WHERE has_E > 0) AS e, COUNT(DISTINCT r.id) FILTER (WHERE has_A = 0 AND has_B = 0 AND has_C = 0 AND has_D = 0 AND has_E = 0) AS nope, COUNT(DISTINCT r.id) AS total FROM categorized r ) SELECT *, ROUND((a * 100.0) / NULLIF(total, 0), 2) AS a_percent, ROUND((b * 100.0) / NULLIF(total, 0), 2) AS b_percent, ROUND((c * 100.0) / NULLIF(total, 0), 2) AS c_percent, ROUND((d * 100.0) / NULLIF(total, 0), 2) AS d_percent, ROUND((e * 100.0) / NULLIF(total, 0), 2) AS e_percent, ROUND((nope * 100.0) / NULLIF(total, 0), 2) AS nope_percent FROM aggregated; 0 N Y N 464 240 Y N