main_dashboard.waiting_registration Y Normal 0 N 1000 100 - 2024/08/02 11:56:22.507 - 2024/08/02 11:56:22.507 Table input 2 (person_registry) РФ Insert / update (main_dashboard.waiting_registration) N Get variables 2 2 Select values 2 2 Y Table input 2 (person_registry) РФ Get variables 2 2 Y Select values 2 2 Insert / update (main_dashboard.waiting_registration) Y Get variables 2 2 GetVariable Y 1 none -1 REG_ID -1 none String -1 VK_ARRAY -1 none String 544 400 Insert / update (main_dashboard.waiting_registration) InsertUpdate Y 1 none 100 ervu-dashboard = recruitment_id REG_ID main_dashboard waiting_registration
waiting_registration waiting_count Y "waiting_registration_M" male_count Y "waiting_registration_W" female_count Y mobilization_criterion mobilization_criterion Y volunteer_criterion volunteer_criterion Y contract_criterion contract_criterion Y mobilization_criterion_percent mobilization_criterion_percent Y volunteer_criterion_percent volunteer_criterion_percent Y contract_criterion_percent contract_criterion_percent Y waiting_registration_percent waiting_percent Y recruitment_id recruitment_id N
N 928 336
Select values 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 752 400 Table input 2 (person_registry) РФ TableInput Y 1 none postgres.person_registry N 0 WITH vse as ( select *, r.id as r_id FROM public.recruits AS r JOIN public.recruits_info AS ri ON ri.recruit_id = r.id WHERE r.vu_current_info ->> 'isMilitaryRegistered' = 'false' AND r.current_recruitment_id IS NOT NULL AND r.target_recruitment_id IS NOT NULL ), extracted_children AS ( SELECT ri.recruit_id, jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child FROM vse ri WHERE jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array' ), children_birth_dates AS ( SELECT recruit_id, (child::jsonb->'svedFLBS'->'dataRozhdDok'->>'den')::int AS day, (child::jsonb->'svedFLBS'->'dataRozhdDok'->>'mesyacz')::int AS month, (child::jsonb->'svedFLBS'->'dataRozhdDok'->>'god')::int AS year FROM extracted_children ), children_count AS ( SELECT recruit_id, COUNT(*) AS children_under_16 FROM children_birth_dates WHERE AGE(make_date(year, month, day)) < interval '16 years' GROUP BY recruit_id ), recruit_data AS ( SELECT COUNT(*) AS waiting_count, COUNT(*) FILTER (WHERE gender = 'MALE') AS male_count, COUNT(*) FILTER (WHERE gender = 'FEMALE') AS female_count, COUNT(*) FILTER ( WHERE (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 70 AND gender = 'MALE') -- мужчины от 18 до 70 лет OR (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 45 AND gender = 'FEMALE') -- женщины от 18 до 45 лет AND (conscription IS NULL OR conscription = false) -- отсутствие отсрочки AND COALESCE(cc.children_under_16, 0) < 5 -- исключить рекрутов с 5 и более детьми младше 16 лет ) AS mobilization_criterion, COUNT(*) FILTER ( WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 30 AND gender = 'MALE' -- мужчины от 18 до 30 лет AND (conscription IS NULL OR conscription = false) -- отсутствие отсрочки ) AS volunteer_criterion, COUNT(*) FILTER ( WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 50 AND gender = 'MALE' -- мужчины от 18 до 50 лет AND (conscription IS NULL OR conscription = false) -- отсутствие отсрочки AND ri.info->'svedSudim'->>'prOtsSvedSudim' = '1' -- признак отсутствия данных о судимости ) AS contract_criterion FROM vse as ri LEFT JOIN children_count AS cc ON ri.r_id = cc.recruit_id ) SELECT waiting_count, ROUND(COALESCE((waiting_count::DECIMAL / NULLIF((SELECT COUNT(*) FROM public.recruits), 0) * 100), 0), 2) AS waiting_percent, male_count, female_count, '${REG_ID}' AS recruitment_id, mobilization_criterion, volunteer_criterion, contract_criterion, ROUND(mobilization_criterion::NUMERIC / NULLIF(waiting_count, 0) * 100, 2) AS mobilization_criterion_percent, ROUND(volunteer_criterion::NUMERIC / NULLIF(waiting_count, 0) * 100, 2) AS volunteer_criterion_percent, ROUND(contract_criterion::NUMERIC / NULLIF(waiting_count, 0) * 100, 2) AS contract_criterion_percent FROM recruit_data; Y 368 336