m_d.total_reg convict
This commit is contained in:
parent
a999ebb3c7
commit
1e05529849
2 changed files with 65 additions and 25 deletions
|
|
@ -257,12 +257,12 @@ registered as (
|
|||
),
|
||||
vse AS (
|
||||
SELECT
|
||||
distinct
|
||||
--distinct
|
||||
r.id AS r_id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'ALL'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS r_current_recruitment_id,
|
||||
r.gender,
|
||||
|
|
@ -296,9 +296,9 @@ vse AS (
|
|||
extracted_children AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
jsonb_array_elements_text(ri.info->'svedFL'->'svedDeti'->'rebenok') AS child
|
||||
jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child
|
||||
FROM vse ri
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedDeti'->'rebenok') = 'array'
|
||||
WHERE jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array'
|
||||
),
|
||||
children_birth_dates AS (
|
||||
SELECT
|
||||
|
|
@ -320,22 +320,22 @@ recruit_data AS (
|
|||
SELECT
|
||||
ri.r_current_recruitment_id::uuid AS recruitment_id,
|
||||
ri.convicts,
|
||||
COUNT(*) AS total_count,
|
||||
COUNT(*) FILTER (WHERE gender = 'MALE') AS male_count,
|
||||
COUNT(*) FILTER (WHERE gender = 'FEMALE') AS female_count,
|
||||
COUNT(*) FILTER (
|
||||
COUNT(distinct ri.recruit_id) AS total_count,
|
||||
COUNT(distinct ri.recruit_id) FILTER (WHERE gender = 'MALE') AS male_count,
|
||||
COUNT(distinct ri.recruit_id) FILTER (WHERE gender = 'FEMALE') AS female_count,
|
||||
COUNT(distinct ri.recruit_id) FILTER (
|
||||
WHERE (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 30 AND 50 AND gender = 'MALE') -- мужчины от 30 до 50 лет
|
||||
OR (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 30 AND 45 AND gender = 'FEMALE') -- женщины от 30 до 45 лет
|
||||
AND COALESCE(cc.children_under_16, 0) < 5
|
||||
) AS mobilization_criterion, -- критерии от 03.06.2025
|
||||
|
||||
COUNT(*) FILTER (
|
||||
COUNT(distinct ri.recruit_id) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 30
|
||||
AND gender = 'MALE'
|
||||
AND hidden IS true -- нет отсрочки и нет освобождения от службы
|
||||
) AS volunteer_criterion, -- критерии от 03.06.2025
|
||||
|
||||
COUNT(*) FILTER (
|
||||
COUNT(distinct ri.recruit_id) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 50
|
||||
AND gender = 'MALE'
|
||||
AND (ri.info->'svedFL'->'svedPND'->>'prOtsSvedPND' = '1'
|
||||
|
|
@ -346,6 +346,19 @@ recruit_data AS (
|
|||
FROM vse AS ri
|
||||
LEFT JOIN children_count AS cc ON ri.recruit_id = cc.recruit_id
|
||||
GROUP BY ri.r_current_recruitment_id, ri.convicts
|
||||
),
|
||||
recruit_data_all AS (
|
||||
SELECT
|
||||
recruitment_id,
|
||||
'ALL' AS convicts,
|
||||
SUM(total_count) AS total_count,
|
||||
SUM(male_count) AS male_count,
|
||||
SUM(female_count) AS female_count,
|
||||
SUM(mobilization_criterion) AS mobilization_criterion,
|
||||
SUM(volunteer_criterion) AS volunteer_criterion,
|
||||
SUM(contract_criterion) AS contract_criterion
|
||||
FROM recruit_data
|
||||
GROUP BY recruitment_id
|
||||
)
|
||||
SELECT
|
||||
ids.recruitment_id,
|
||||
|
|
@ -370,7 +383,34 @@ SELECT
|
|||
ELSE 0
|
||||
END AS contract_criterion_percent
|
||||
FROM ids
|
||||
JOIN recruit_data AS rd ON ids.recruitment_id = rd.recruitment_id</sql>
|
||||
JOIN recruit_data AS rd ON ids.recruitment_id = rd.recruitment_id
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
ids.recruitment_id,
|
||||
rd.convicts,
|
||||
current_date AS recording_date,
|
||||
COALESCE(rd.total_count, 0) AS total_count,
|
||||
COALESCE(rd.male_count, 0) AS male_count,
|
||||
COALESCE(rd.female_count, 0) AS female_count,
|
||||
COALESCE(rd.mobilization_criterion, 0) AS mobilization_criterion,
|
||||
COALESCE(rd.volunteer_criterion, 0) AS volunteer_criterion,
|
||||
COALESCE(rd.contract_criterion, 0) AS contract_criterion,
|
||||
CASE
|
||||
WHEN rd.total_count > 0 THEN ROUND(rd.mobilization_criterion::NUMERIC / rd.total_count * 100, 2)
|
||||
ELSE 0
|
||||
END AS mobilization_criterion_percent,
|
||||
CASE
|
||||
WHEN rd.total_count > 0 THEN ROUND(rd.volunteer_criterion::NUMERIC / rd.total_count * 100, 2)
|
||||
ELSE 0
|
||||
END AS volunteer_criterion_percent,
|
||||
CASE
|
||||
WHEN rd.total_count > 0 THEN ROUND(rd.contract_criterion::NUMERIC / rd.total_count * 100, 2)
|
||||
ELSE 0
|
||||
END AS contract_criterion_percent
|
||||
FROM ids
|
||||
JOIN recruit_data_all AS rd ON ids.recruitment_id = rd.recruitment_id</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
|
|
|
|||
|
|
@ -242,12 +242,12 @@ last_status as (select recruit_id,
|
|||
where status in ('1', '12.7', '8.2', '8.3')
|
||||
group by recruit_id),
|
||||
notregistered as (
|
||||
select
|
||||
distinct rh.recruit_id,
|
||||
rh.id as recruit_history_id
|
||||
from recruits_history rh
|
||||
join last_status ls on rh.recruit_id=ls. recruit_id and rh.date_time=ls.max_date_time
|
||||
where rh.status in ('1', '12.7', '8.2', '8.3')
|
||||
select
|
||||
distinct rh.recruit_id,
|
||||
rh.id as recruit_history_id
|
||||
from recruits_history rh
|
||||
join last_status ls on rh.recruit_id=ls. recruit_id and rh.date_time=ls.max_date_time
|
||||
where rh.status in ('1', '12.7', '8.2', '8.3')
|
||||
--and rh.source is not null
|
||||
),
|
||||
total_recruits AS (
|
||||
|
|
@ -257,7 +257,7 @@ total_recruits AS (
|
|||
WHERE
|
||||
r.id in (SELECT recruit_id FROM notregistered) and
|
||||
coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.current_recruitment_id is null
|
||||
AND r.current_recruitment_id is null
|
||||
),
|
||||
vse AS (
|
||||
SELECT
|
||||
|
|
@ -292,7 +292,7 @@ vse AS (
|
|||
r.id in (SELECT recruit_id FROM notregistered) and
|
||||
rh.id in (SELECT recruit_history_id FROM notregistered) and
|
||||
coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.current_recruitment_id is null
|
||||
AND r.current_recruitment_id is null
|
||||
),
|
||||
extracted_children AS (
|
||||
SELECT
|
||||
|
|
@ -320,22 +320,22 @@ children_count AS (
|
|||
recruit_data AS (
|
||||
SELECT
|
||||
ri.r_target_recruitment_id::uuid AS recruitment_id,
|
||||
COUNT(*) AS waiting_count,
|
||||
COUNT(*) FILTER (WHERE gender = 'MALE') AS male_count,
|
||||
COUNT(*) FILTER (WHERE gender = 'FEMALE') AS female_count,
|
||||
COUNT(*) FILTER (
|
||||
COUNT(distinct ri.recruit_id) AS waiting_count,
|
||||
COUNT(distinct ri.recruit_id) FILTER (WHERE gender = 'MALE') AS male_count,
|
||||
COUNT(distinct ri.recruit_id) FILTER (WHERE gender = 'FEMALE') AS female_count,
|
||||
COUNT(distinct ri.recruit_id) FILTER (
|
||||
WHERE (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 30 AND 50 AND gender = 'MALE') -- мужчины от 30 до 50 лет
|
||||
OR (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 30 AND 45 AND gender = 'FEMALE') -- женщины от 30 до 45 лет
|
||||
AND COALESCE(cc.children_under_16, 0) < 5
|
||||
) AS mobilization_criterion, -- критерии от 03.06.2025
|
||||
|
||||
COUNT(*) FILTER (
|
||||
COUNT(distinct ri.recruit_id) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 30
|
||||
AND gender = 'MALE'
|
||||
AND hidden IS true -- нет отсрочки и нет освобождения от службы
|
||||
) AS volunteer_criterion, -- критерии от 03.06.2025
|
||||
|
||||
COUNT(*) FILTER (
|
||||
COUNT(distinct ri.recruit_id) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 50
|
||||
AND gender = 'MALE'
|
||||
AND (ri.info->'svedFL'->'svedPND'->>'prOtsSvedPND' = '1'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue