+subpoena, temporary_measure
This commit is contained in:
parent
aa93c87e07
commit
15fa09aeac
11 changed files with 3029 additions and 1437 deletions
|
|
@ -785,46 +785,106 @@
|
|||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.person_registry</connection>
|
||||
<sql>WITH recruit_data AS (
|
||||
SELECT
|
||||
COUNT(*) AS total_count,
|
||||
COUNT(*) FILTER (WHERE gender = 'MALE') AS male_count,
|
||||
COUNT(*) FILTER (WHERE gender = 'FEMALE') AS female_count
|
||||
FROM public.recruits r
|
||||
WHERE r.vu_current_info ->> 'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
OR r.target_recruitment_id = ANY (
|
||||
CASE
|
||||
<sql>WITH extracted_children AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri
|
||||
ON ri.recruit_id = r.id
|
||||
WHERE
|
||||
jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array'
|
||||
AND r.vu_current_info ->> 'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NOT NULL AND '${VK_ARRAY}' != ''
|
||||
AND r.target_recruitment_id = ANY (
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN ARRAY[]::uuid[]
|
||||
ELSE string_to_array(trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ',')::uuid[]
|
||||
END
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
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 total_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')
|
||||
OR (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 45
|
||||
AND gender = 'FEMALE')
|
||||
AND (conscription IS NULL OR conscription = false)
|
||||
AND COALESCE(cc.children_under_16, 0) < 5
|
||||
) AS mobilization_criterion,
|
||||
COUNT(*) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 30
|
||||
AND gender = 'MALE'
|
||||
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'
|
||||
AND (conscription IS NULL OR conscription = false)
|
||||
AND ri.info->'svedSudim'->>'prOtsSvedSudim' = '1'
|
||||
) AS contract_criterion
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri
|
||||
ON ri.recruit_id = r.id
|
||||
LEFT JOIN children_count AS cc
|
||||
ON r.id = cc.recruit_id
|
||||
WHERE r.vu_current_info ->> 'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NOT NULL AND '${VK_ARRAY}' != ''
|
||||
AND r.target_recruitment_id = ANY (
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN ARRAY[]::uuid[]
|
||||
ELSE string_to_array(trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ',')::uuid[]
|
||||
END
|
||||
)
|
||||
)
|
||||
)
|
||||
SELECT
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
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 '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0
|
||||
ELSE rd.total_count
|
||||
END AS total_count,
|
||||
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 '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0
|
||||
ELSE rd.male_count
|
||||
END AS male_count,
|
||||
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 '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0
|
||||
ELSE rd.female_count
|
||||
END AS female_count,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
0 AS mobilization_criterion,
|
||||
0 AS volunteer_criterion,
|
||||
0 AS contract_criterion,
|
||||
0 AS mobilization_criterion_percent,
|
||||
0 AS volunteer_criterion_percent,
|
||||
0 AS contract_criterion_percent
|
||||
FROM recruit_data rd;</sql>
|
||||
WHEN rd.total_count > 0 THEN ROUND(rd.contract_criterion::NUMERIC / rd.total_count * 100, 2)
|
||||
ELSE 0
|
||||
END AS contract_criterion_percent
|
||||
FROM recruit_data AS rd;
|
||||
</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -696,6 +696,11 @@
|
|||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>waiting_registration_percent</name>
|
||||
<rename>waiting_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
|
|
@ -785,30 +790,113 @@
|
|||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.person_registry</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COUNT(*) END AS waiting_count,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COUNT(*) FILTER (WHERE gender = 'MALE') END AS male_count,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COUNT(*) FILTER (WHERE gender = 'FEMALE') END AS female_count,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
0 AS mobilization_criterion,
|
||||
0 AS volunteer_criterion,
|
||||
0 AS contract_criterion,
|
||||
0 AS mobilization_criterion_percent,
|
||||
0 AS volunteer_criterion_percent,
|
||||
0 AS contract_criterion_percent,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE ROUND(COALESCE((COUNT(*)::DECIMAL / NULLIF((SELECT COUNT(*) FROM public.recruits), 0) * 100), 0), 2) END AS waiting_percent
|
||||
FROM public.recruits r
|
||||
WHERE r.vu_current_info ->> 'isMilitaryRegistered' = 'false'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
OR r.target_recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
<sql>WITH extracted_children AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri
|
||||
ON ri.recruit_id = r.id
|
||||
WHERE
|
||||
jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array'
|
||||
AND r.vu_current_info ->> 'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NOT NULL AND '${VK_ARRAY}' != ''
|
||||
AND r.target_recruitment_id = ANY (
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN ARRAY[]::uuid[]
|
||||
ELSE string_to_array(trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ',')::uuid[]
|
||||
END
|
||||
)
|
||||
)
|
||||
);</sql>
|
||||
),
|
||||
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')
|
||||
OR (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 45 AND gender = 'FEMALE')
|
||||
AND (conscription IS NULL OR conscription = false)
|
||||
AND COALESCE(cc.children_under_16, 0) < 5
|
||||
) AS mobilization_criterion,
|
||||
COUNT(*) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 30
|
||||
AND gender = 'MALE'
|
||||
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'
|
||||
AND (conscription IS NULL OR conscription = false)
|
||||
AND ri.info->'svedSudim'->>'prOtsSvedSudim' = '1'
|
||||
) AS contract_criterion
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri
|
||||
ON ri.recruit_id = r.id
|
||||
LEFT JOIN children_count AS cc
|
||||
ON r.id = cc.recruit_id
|
||||
WHERE r.vu_current_info ->> 'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NOT NULL AND '${VK_ARRAY}' != ''
|
||||
AND r.target_recruitment_id = ANY (
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN ARRAY[]::uuid[]
|
||||
ELSE string_to_array(trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ',')::uuid[]
|
||||
END
|
||||
)
|
||||
)
|
||||
)
|
||||
SELECT
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
COALESCE(rd.waiting_count, 0) AS waiting_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.waiting_count > 0 THEN ROUND(rd.mobilization_criterion::NUMERIC / rd.waiting_count * 100, 2)
|
||||
ELSE 0
|
||||
END AS mobilization_criterion_percent,
|
||||
CASE
|
||||
WHEN rd.waiting_count > 0 THEN ROUND(rd.volunteer_criterion::NUMERIC / rd.waiting_count * 100, 2)
|
||||
ELSE 0
|
||||
END AS volunteer_criterion_percent,
|
||||
CASE
|
||||
WHEN rd.waiting_count > 0 THEN ROUND(rd.contract_criterion::NUMERIC / rd.waiting_count * 100, 2)
|
||||
ELSE 0
|
||||
END AS contract_criterion_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0
|
||||
ELSE ROUND(
|
||||
COALESCE(
|
||||
(rd.waiting_count::DECIMAL / NULLIF(
|
||||
(SELECT COUNT(*) FROM public.recruits WHERE vu_current_info ->> 'isMilitaryRegistered' = 'true'), 0) * 100
|
||||
), 0
|
||||
), 2
|
||||
)
|
||||
END AS waiting_percent
|
||||
FROM recruit_data AS rd;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue