fix removed_registry

This commit is contained in:
Ruslan 2025-03-27 14:38:28 +03:00
parent d7f523aef0
commit e1d0fb102f

View file

@ -264,36 +264,47 @@
<method>none</method>
<schema_name/>
</partitioning>
<connection>postgres.decision-document-service</connection>
<connection>ervu_person_registry</connection>
<execute_each_row>N</execute_each_row>
<limit>0</limit>
<sql>WITH
ids AS (
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id
),
recr AS (
SELECT
r.id,
r.system_pgs_status
FROM recruits r
WHERE r.system_pgs_status = '1.3'
),
last_decision AS (
SELECT
d.recruitment_id,
d.recruit_id,
d.extra_info,
d.created_at,
d.type_id
d.code
FROM (
SELECT
ROW_NUMBER() OVER (PARTITION BY d.recruit_id ORDER BY d.created_at DESC) AS rn,
d.recruitment_id,
d.recruit_id,
d.extra_info,
d.created_at,
d.type_id
d.type->>'code' AS code
FROM decision d
WHERE EXTRACT(YEAR FROM d.created_at) = EXTRACT(YEAR FROM CURRENT_DATE) -- ищим записи на текущий год
WHERE d.recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
AND EXTRACT(YEAR FROM d.created_at) = EXTRACT(YEAR FROM CURRENT_DATE) -- ищим записи на текущий год
) d
WHERE rn = 1 -- ищем последнее решение для рекрута
AND d.code IN ('9', '10')
/*FROM decision d
WHERE EXTRACT(YEAR FROM d.created_at) = EXTRACT(YEAR FROM CURRENT_DATE) -- ищим записи на текущий год*/
),
total_info AS (
SELECT
r.current_recruitment AS recruitment_id,
d.recruitment_id,
COUNT(*) AS removed_registry,
COUNT(*) FILTER (WHERE d.extra_info ->> 'cause' = 'ageLimit') AS age_limit, -- Количество по причине предельный возраст
COUNT(*) FILTER (WHERE d.extra_info ->> 'cause' = 'notAlive') AS death, -- Количество по причине смерть
@ -302,15 +313,9 @@ total_info AS (
ROUND(COUNT(*) FILTER (WHERE d.extra_info ->> 'cause' = 'ageLimit') * 100.0 / NULLIF(COUNT(*), 0), 2) AS age_limit_percent,
ROUND(COUNT(*) FILTER (WHERE d.extra_info ->> 'cause' = 'notAlive') * 100.0 / NULLIF(COUNT(*), 0), 2) AS death_percent,
ROUND(COUNT(*) FILTER (WHERE d.extra_info ->> 'cause' IS NULL OR d.extra_info ->> 'cause' NOT IN ('ageLimit', 'notAlive', 'citizenshipLost')) * 100.0 / NULLIF(COUNT(*), 0), 2) AS other_percent
FROM public.recruit AS r
JOIN last_decision AS d
ON d.recruit_id = r.id
JOIN public.decision_type AS dt
ON dt.id = d.type_id
WHERE r.system_pgs_status = '1.3' AND -- на тесте тушит все результаты (остальные статусы не учитываем)
dt.code IN ('9', '10')
AND r.current_recruitment::uuid IN (SELECT recruitment_id FROM ids)
GROUP BY r.current_recruitment
FROM last_decision d
JOIN recr AS r ON d.recruit_id = r.id
GROUP BY d.recruitment_id
)
SELECT
current_date AS recording_date,