+total_registered.age
This commit is contained in:
parent
f7186f2fa1
commit
68bea2118c
2 changed files with 99 additions and 537 deletions
|
|
@ -134,32 +134,8 @@
|
||||||
<set_logfile>N</set_logfile>
|
<set_logfile>N</set_logfile>
|
||||||
<wait_until_finished>Y</wait_until_finished>
|
<wait_until_finished>Y</wait_until_finished>
|
||||||
<parallel>N</parallel>
|
<parallel>N</parallel>
|
||||||
<xloc>896</xloc>
|
<xloc>944</xloc>
|
||||||
<yloc>368</yloc>
|
<yloc>240</yloc>
|
||||||
<attributes_hac/>
|
|
||||||
</action>
|
|
||||||
<action>
|
|
||||||
<name>job_predictive.hwf</name>
|
|
||||||
<description/>
|
|
||||||
<type>WORKFLOW</type>
|
|
||||||
<attributes/>
|
|
||||||
<add_date>N</add_date>
|
|
||||||
<add_time>N</add_time>
|
|
||||||
<create_parent_folder>N</create_parent_folder>
|
|
||||||
<exec_per_row>N</exec_per_row>
|
|
||||||
<filename>${PROJECT_HOME}/predictive/job_predictive.hwf</filename>
|
|
||||||
<loglevel>Nothing</loglevel>
|
|
||||||
<parameters>
|
|
||||||
<pass_all_parameters>Y</pass_all_parameters>
|
|
||||||
</parameters>
|
|
||||||
<params_from_previous>N</params_from_previous>
|
|
||||||
<run_configuration>local</run_configuration>
|
|
||||||
<set_append_logfile>N</set_append_logfile>
|
|
||||||
<set_logfile>N</set_logfile>
|
|
||||||
<wait_until_finished>Y</wait_until_finished>
|
|
||||||
<parallel>N</parallel>
|
|
||||||
<xloc>1072</xloc>
|
|
||||||
<yloc>128</yloc>
|
|
||||||
<attributes_hac/>
|
<attributes_hac/>
|
||||||
</action>
|
</action>
|
||||||
</actions>
|
</actions>
|
||||||
|
|
@ -192,20 +168,6 @@
|
||||||
<evaluation>N</evaluation>
|
<evaluation>N</evaluation>
|
||||||
<unconditional>Y</unconditional>
|
<unconditional>Y</unconditional>
|
||||||
</hop>
|
</hop>
|
||||||
<hop>
|
|
||||||
<from>job_info_recruits.hwf</from>
|
|
||||||
<to>job_predictive.hwf</to>
|
|
||||||
<enabled>N</enabled>
|
|
||||||
<evaluation>N</evaluation>
|
|
||||||
<unconditional>Y</unconditional>
|
|
||||||
</hop>
|
|
||||||
<hop>
|
|
||||||
<from>job_predictive.hwf</from>
|
|
||||||
<to>job_last_recording_date</to>
|
|
||||||
<enabled>N</enabled>
|
|
||||||
<evaluation>Y</evaluation>
|
|
||||||
<unconditional>Y</unconditional>
|
|
||||||
</hop>
|
|
||||||
<hop>
|
<hop>
|
||||||
<from>job_info_recruits.hwf</from>
|
<from>job_info_recruits.hwf</from>
|
||||||
<to>job_last_recording_date</to>
|
<to>job_last_recording_date</to>
|
||||||
|
|
|
||||||
|
|
@ -41,26 +41,6 @@
|
||||||
<to>Insert / update (total_registered.age) 2</to>
|
<to>Insert / update (total_registered.age) 2</to>
|
||||||
<enabled>Y</enabled>
|
<enabled>Y</enabled>
|
||||||
</hop>
|
</hop>
|
||||||
<hop>
|
|
||||||
<from>Get variables 3 2 2 2</from>
|
|
||||||
<to>Select values 3 2 2 2</to>
|
|
||||||
<enabled>N</enabled>
|
|
||||||
</hop>
|
|
||||||
<hop>
|
|
||||||
<from>Select values 3 2 2 2</from>
|
|
||||||
<to>Insert / update (total_registered.age) 2 2</to>
|
|
||||||
<enabled>N</enabled>
|
|
||||||
</hop>
|
|
||||||
<hop>
|
|
||||||
<from>Table input (person_registry) регион/мужчины 2</from>
|
|
||||||
<to>Get variables 3 2 2 2</to>
|
|
||||||
<enabled>N</enabled>
|
|
||||||
</hop>
|
|
||||||
<hop>
|
|
||||||
<from>Table input (person_registry) регион/мужчины 2</from>
|
|
||||||
<to>Insert / update (total_registered.age) 2 2</to>
|
|
||||||
<enabled>N</enabled>
|
|
||||||
</hop>
|
|
||||||
</order>
|
</order>
|
||||||
<transform>
|
<transform>
|
||||||
<name>Get variables 3 2 2</name>
|
<name>Get variables 3 2 2</name>
|
||||||
|
|
@ -95,39 +75,6 @@
|
||||||
<yloc>800</yloc>
|
<yloc>800</yloc>
|
||||||
</GUI>
|
</GUI>
|
||||||
</transform>
|
</transform>
|
||||||
<transform>
|
|
||||||
<name>Get variables 3 2 2 2</name>
|
|
||||||
<type>GetVariable</type>
|
|
||||||
<description/>
|
|
||||||
<distribute>Y</distribute>
|
|
||||||
<custom_distribution/>
|
|
||||||
<copies>1</copies>
|
|
||||||
<partitioning>
|
|
||||||
<method>none</method>
|
|
||||||
<schema_name/>
|
|
||||||
</partitioning>
|
|
||||||
<fields>
|
|
||||||
<field>
|
|
||||||
<length>-1</length>
|
|
||||||
<name>REC_ID</name>
|
|
||||||
<precision>-1</precision>
|
|
||||||
<trim_type>none</trim_type>
|
|
||||||
<type>String</type>
|
|
||||||
</field>
|
|
||||||
<field>
|
|
||||||
<length>-1</length>
|
|
||||||
<name>SCM</name>
|
|
||||||
<precision>-1</precision>
|
|
||||||
<trim_type>none</trim_type>
|
|
||||||
<type>String</type>
|
|
||||||
</field>
|
|
||||||
</fields>
|
|
||||||
<attributes/>
|
|
||||||
<GUI>
|
|
||||||
<xloc>1536</xloc>
|
|
||||||
<yloc>1008</yloc>
|
|
||||||
</GUI>
|
|
||||||
</transform>
|
|
||||||
<transform>
|
<transform>
|
||||||
<name>Insert / update (total_registered.age) 2</name>
|
<name>Insert / update (total_registered.age) 2</name>
|
||||||
<type>InsertUpdate</type>
|
<type>InsertUpdate</type>
|
||||||
|
|
@ -282,160 +229,6 @@
|
||||||
<yloc>720</yloc>
|
<yloc>720</yloc>
|
||||||
</GUI>
|
</GUI>
|
||||||
</transform>
|
</transform>
|
||||||
<transform>
|
|
||||||
<name>Insert / update (total_registered.age) 2 2</name>
|
|
||||||
<type>InsertUpdate</type>
|
|
||||||
<description/>
|
|
||||||
<distribute>Y</distribute>
|
|
||||||
<custom_distribution/>
|
|
||||||
<copies>1</copies>
|
|
||||||
<partitioning>
|
|
||||||
<method>none</method>
|
|
||||||
<schema_name/>
|
|
||||||
</partitioning>
|
|
||||||
<commit>100</commit>
|
|
||||||
<connection>ervu-dashboard</connection>
|
|
||||||
<lookup>
|
|
||||||
<key>
|
|
||||||
<condition>=</condition>
|
|
||||||
<field>recruitment_id</field>
|
|
||||||
<name>recruitment_id</name>
|
|
||||||
</key>
|
|
||||||
<key>
|
|
||||||
<condition>=</condition>
|
|
||||||
<field>recording_date</field>
|
|
||||||
<name>recording_date</name>
|
|
||||||
</key>
|
|
||||||
<key>
|
|
||||||
<condition>=</condition>
|
|
||||||
<field>registered</field>
|
|
||||||
<name>registered</name>
|
|
||||||
</key>
|
|
||||||
<key>
|
|
||||||
<condition>=</condition>
|
|
||||||
<field>"all_M_W"</field>
|
|
||||||
<name>gender</name>
|
|
||||||
</key>
|
|
||||||
<key>
|
|
||||||
<condition>=</condition>
|
|
||||||
<field>convicts</field>
|
|
||||||
<name>convicts</name>
|
|
||||||
</key>
|
|
||||||
<schema>total_registered</schema>
|
|
||||||
<table>age</table>
|
|
||||||
<value>
|
|
||||||
<name>"17_years"</name>
|
|
||||||
<rename>17_year_count</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"18-26_years"</name>
|
|
||||||
<rename>18-26_year_count</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"27-30_years"</name>
|
|
||||||
<rename>27-30_year_count</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"31-35_years"</name>
|
|
||||||
<rename>31-35_year_count</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"36-40_years"</name>
|
|
||||||
<rename>36-40_year_count</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"41-45_years"</name>
|
|
||||||
<rename>41-45_year_count</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"51+_years"</name>
|
|
||||||
<rename>41-45_year_count</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"all_M_W"</name>
|
|
||||||
<rename>gender</rename>
|
|
||||||
<update>N</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"46-50_years"</name>
|
|
||||||
<rename>46-50_year_count</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"17_years_percent"</name>
|
|
||||||
<rename>17_year_percent</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"18-26_years_percent"</name>
|
|
||||||
<rename>18-26_year_percent</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"27-30_years_percent"</name>
|
|
||||||
<rename>27-30_year_percent</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"31-35_years_percent"</name>
|
|
||||||
<rename>31-35_year_percent</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"36-40_years_percent"</name>
|
|
||||||
<rename>36-40_year_percent</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"41-45_years_percent"</name>
|
|
||||||
<rename>41-45_year_percent</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"46-50_years_percent"</name>
|
|
||||||
<rename>46-50_year_percent</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>"51+_years_percent"</name>
|
|
||||||
<rename>51+_year_percent</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>recruitment_id</name>
|
|
||||||
<rename>recruitment_id</rename>
|
|
||||||
<update>N</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>registered</name>
|
|
||||||
<rename>registered</rename>
|
|
||||||
<update>N</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>total_count</name>
|
|
||||||
<rename>total_count</rename>
|
|
||||||
<update>Y</update>
|
|
||||||
</value>
|
|
||||||
<value>
|
|
||||||
<name>convicts</name>
|
|
||||||
<rename>convicts</rename>
|
|
||||||
<update>N</update>
|
|
||||||
</value>
|
|
||||||
</lookup>
|
|
||||||
<update_bypassed>Y</update_bypassed>
|
|
||||||
<attributes/>
|
|
||||||
<GUI>
|
|
||||||
<xloc>1920</xloc>
|
|
||||||
<yloc>928</yloc>
|
|
||||||
</GUI>
|
|
||||||
</transform>
|
|
||||||
<transform>
|
<transform>
|
||||||
<name>Select values 3 2 2</name>
|
<name>Select values 3 2 2</name>
|
||||||
<type>SelectValues</type>
|
<type>SelectValues</type>
|
||||||
|
|
@ -490,60 +283,6 @@
|
||||||
<yloc>800</yloc>
|
<yloc>800</yloc>
|
||||||
</GUI>
|
</GUI>
|
||||||
</transform>
|
</transform>
|
||||||
<transform>
|
|
||||||
<name>Select values 3 2 2 2</name>
|
|
||||||
<type>SelectValues</type>
|
|
||||||
<description/>
|
|
||||||
<distribute>Y</distribute>
|
|
||||||
<custom_distribution/>
|
|
||||||
<copies>1</copies>
|
|
||||||
<partitioning>
|
|
||||||
<method>none</method>
|
|
||||||
<schema_name/>
|
|
||||||
</partitioning>
|
|
||||||
<fields>
|
|
||||||
<select_unspecified>N</select_unspecified>
|
|
||||||
<meta>
|
|
||||||
<name>REC_ID</name>
|
|
||||||
<rename>REC_ID</rename>
|
|
||||||
<type>String</type>
|
|
||||||
<length>-2</length>
|
|
||||||
<precision>-2</precision>
|
|
||||||
<conversion_mask/>
|
|
||||||
<date_format_lenient>false</date_format_lenient>
|
|
||||||
<date_format_locale/>
|
|
||||||
<date_format_timezone/>
|
|
||||||
<lenient_string_to_number>false</lenient_string_to_number>
|
|
||||||
<encoding/>
|
|
||||||
<decimal_symbol/>
|
|
||||||
<grouping_symbol/>
|
|
||||||
<currency_symbol/>
|
|
||||||
<storage_type/>
|
|
||||||
</meta>
|
|
||||||
<meta>
|
|
||||||
<name>SCM</name>
|
|
||||||
<rename>SCM</rename>
|
|
||||||
<type>String</type>
|
|
||||||
<length>-2</length>
|
|
||||||
<precision>-2</precision>
|
|
||||||
<conversion_mask/>
|
|
||||||
<date_format_lenient>false</date_format_lenient>
|
|
||||||
<date_format_locale/>
|
|
||||||
<date_format_timezone/>
|
|
||||||
<lenient_string_to_number>false</lenient_string_to_number>
|
|
||||||
<encoding/>
|
|
||||||
<decimal_symbol/>
|
|
||||||
<grouping_symbol/>
|
|
||||||
<currency_symbol/>
|
|
||||||
<storage_type/>
|
|
||||||
</meta>
|
|
||||||
</fields>
|
|
||||||
<attributes/>
|
|
||||||
<GUI>
|
|
||||||
<xloc>1680</xloc>
|
|
||||||
<yloc>1008</yloc>
|
|
||||||
</GUI>
|
|
||||||
</transform>
|
|
||||||
<transform>
|
<transform>
|
||||||
<name>Table input (person_registry) регион/мужчины</name>
|
<name>Table input (person_registry) регион/мужчины</name>
|
||||||
<type>TableInput</type>
|
<type>TableInput</type>
|
||||||
|
|
@ -563,46 +302,103 @@ ids AS (
|
||||||
-- Преобразуем строковый массив в таблицу UUID
|
-- Преобразуем строковый массив в таблицу UUID
|
||||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id
|
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id
|
||||||
),
|
),
|
||||||
|
last_status_r as (select recruit_id,
|
||||||
|
max(date_time) filter (where status not in ('1', '1.3', '12', '12.1', '12.2', '12.3', '12.4', '12.5', '13')) max_date_time
|
||||||
|
from recruits_history
|
||||||
|
where status not in ('1', '1.3', '12', '12.1', '12.2', '12.3', '12.4', '12.5', '13')
|
||||||
|
group by recruit_id
|
||||||
|
),
|
||||||
|
registered as (
|
||||||
|
select
|
||||||
|
distinct rh.recruit_id,
|
||||||
|
rh.id as recruit_history_id
|
||||||
|
from recruits_history rh
|
||||||
|
join last_status_r ls on rh.recruit_id=ls.recruit_id and rh.date_time=ls.max_date_time
|
||||||
|
where rh.status not in ('1', '1.3', '12', '12.1', '12.2', '12.3', '12.4', '12.5', '13')
|
||||||
|
--and rh.source is not null
|
||||||
|
),
|
||||||
|
last_status_n as (select recruit_id,
|
||||||
|
max(date_time) filter (where status in ('1', '1.1', '12.2', '12.10')) max_date_time
|
||||||
|
from recruits_history
|
||||||
|
where status in ('1', '1.1', '12.2', '12.10')
|
||||||
|
group by recruit_id
|
||||||
|
),
|
||||||
|
notregistered as (
|
||||||
|
select
|
||||||
|
distinct rh.recruit_id,
|
||||||
|
rh.id as recruit_history_id
|
||||||
|
from recruits_history rh
|
||||||
|
join last_status_n ls on rh.recruit_id=ls. recruit_id and rh.date_time=ls.max_date_time
|
||||||
|
where rh.status in ('1', '1.1', '12.2', '12.10')
|
||||||
|
--and rh.source is not null
|
||||||
|
),
|
||||||
recruit_data AS (
|
recruit_data AS (
|
||||||
SELECT
|
SELECT
|
||||||
r.target_recruitment_id,
|
distinct
|
||||||
|
r.id,
|
||||||
|
ri.recruit_id AS recruit_id,
|
||||||
|
coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||||
r.gender,
|
r.gender,
|
||||||
r.vu_current_info->>'isMilitaryRegistered' AS registered,
|
CASE
|
||||||
r.id AS recruit_id,
|
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||||
|
ELSE 'ALL'
|
||||||
|
END AS convicts,
|
||||||
|
'true' AS registered,
|
||||||
r.birth_date
|
r.birth_date
|
||||||
FROM public.recruits r
|
FROM public.recruits AS r
|
||||||
LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
|
JOIN public.recruits_info AS ri
|
||||||
WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
|
ON ri.recruit_id = r.id
|
||||||
AND r.gender IN ('MALE', 'FEMALE')
|
join public.recruits_history rh on rh.recruit_id=r.id
|
||||||
AND r.current_recruitment_id IS NOT NULL
|
WHERE
|
||||||
AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
r.id in (SELECT recruit_id FROM registered) and
|
||||||
|
rh.id in (SELECT recruit_history_id FROM registered)
|
||||||
|
and coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
distinct
|
||||||
|
r.id,
|
||||||
|
ri.recruit_id AS recruit_id,
|
||||||
|
coalesce (r.target_recruitment_id, rh.target_recruitment_id) AS recruitment_id,
|
||||||
|
r.gender,
|
||||||
|
CASE
|
||||||
|
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||||
|
ELSE 'ALL'
|
||||||
|
END AS convicts,
|
||||||
|
'false' AS registered,
|
||||||
|
r.birth_date
|
||||||
|
FROM public.recruits AS r
|
||||||
|
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||||
|
JOIN public.recruits_history rh ON rh.recruit_id=r.id
|
||||||
|
WHERE
|
||||||
|
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)
|
||||||
),
|
),
|
||||||
total_count AS (
|
total_count AS (
|
||||||
SELECT
|
SELECT
|
||||||
rd.target_recruitment_id as recruitment_id,
|
rd.recruitment_id,
|
||||||
rd.gender,
|
rd.gender,
|
||||||
rd.registered,
|
rd.registered,
|
||||||
|
rd.convicts,
|
||||||
COUNT(rd.recruit_id) AS total
|
COUNT(rd.recruit_id) AS total
|
||||||
FROM recruit_data rd
|
FROM recruit_data rd
|
||||||
GROUP BY rd.target_recruitment_id, rd.gender, rd.registered
|
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||||
),
|
),
|
||||||
total_count_all AS (
|
total_count_all AS (
|
||||||
SELECT
|
SELECT
|
||||||
r.target_recruitment_id AS recruitment_id,
|
rd.recruitment_id,
|
||||||
r.vu_current_info->>'isMilitaryRegistered' AS registered,
|
rd.registered,
|
||||||
COUNT(r.id) AS total
|
rd.convicts,
|
||||||
FROM public.recruits r
|
COUNT(rd.recruit_id) AS total
|
||||||
LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
|
FROM recruit_data rd
|
||||||
WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
|
GROUP BY rd.recruitment_id, rd.registered, rd.convicts
|
||||||
AND r.current_recruitment_id IS NOT NULL
|
|
||||||
AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
|
||||||
GROUP BY r.target_recruitment_id, r.vu_current_info->>'isMilitaryRegistered'
|
|
||||||
),
|
),
|
||||||
age_counts AS (
|
age_counts AS (
|
||||||
SELECT
|
SELECT
|
||||||
rd.target_recruitment_id as recruitment_id,
|
rd.recruitment_id,
|
||||||
rd.gender,
|
rd.gender,
|
||||||
rd.registered,
|
rd.registered,
|
||||||
|
rd.convicts,
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) = 17) AS "17_year_count",
|
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) = 17) AS "17_year_count",
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||||
|
|
@ -612,26 +408,23 @@ age_counts AS (
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) >= 51) AS "51+_year_count"
|
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) >= 51) AS "51+_year_count"
|
||||||
FROM recruit_data rd
|
FROM recruit_data rd
|
||||||
GROUP BY rd.target_recruitment_id, rd.gender, rd.registered
|
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||||
),
|
),
|
||||||
age_counts_all AS (
|
age_counts_all AS (
|
||||||
SELECT
|
SELECT
|
||||||
r.target_recruitment_id AS recruitment_id,
|
r.recruitment_id,
|
||||||
r.vu_current_info->>'isMilitaryRegistered' AS registered,
|
r.registered,
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
|
r.convicts,
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) >= 51) AS "51+_year_count"
|
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||||
FROM public.recruits r
|
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) >= 51) AS "51+_year_count"
|
||||||
LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
|
FROM recruit_data r
|
||||||
WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
|
GROUP BY r.recruitment_id, r.registered, r.convicts
|
||||||
AND r.current_recruitment_id IS NOT NULL
|
|
||||||
AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
|
||||||
GROUP BY r.target_recruitment_id, r.vu_current_info->>'isMilitaryRegistered'
|
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
current_date AS recording_date,
|
current_date AS recording_date,
|
||||||
|
|
@ -657,13 +450,14 @@ SELECT
|
||||||
WHEN tc.gender = 'MALE' THEN 'M'
|
WHEN tc.gender = 'MALE' THEN 'M'
|
||||||
ELSE 'W'
|
ELSE 'W'
|
||||||
END)::text AS gender,
|
END)::text AS gender,
|
||||||
'ALL' AS convicts,
|
tc.convicts,
|
||||||
tc.registered::text
|
tc.registered::text
|
||||||
FROM total_count tc
|
FROM total_count tc
|
||||||
LEFT JOIN age_counts ac
|
LEFT JOIN age_counts ac
|
||||||
ON ac.recruitment_id = tc.recruitment_id
|
ON ac.recruitment_id = tc.recruitment_id
|
||||||
AND ac.gender = tc.gender
|
AND ac.gender = tc.gender
|
||||||
AND ac.registered = tc.registered
|
AND ac.registered = tc.registered
|
||||||
|
AND ac.convicts = tc.convicts
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT
|
SELECT
|
||||||
current_date AS recording_date,
|
current_date AS recording_date,
|
||||||
|
|
@ -686,12 +480,13 @@ SELECT
|
||||||
COALESCE(tca.total, 0) AS total_count,
|
COALESCE(tca.total, 0) AS total_count,
|
||||||
tca.recruitment_id,
|
tca.recruitment_id,
|
||||||
'ALL' AS gender,
|
'ALL' AS gender,
|
||||||
'ALL' AS convicts,
|
tca.convicts,
|
||||||
tca.registered::text
|
tca.registered::text
|
||||||
FROM total_count_all tca
|
FROM total_count_all tca
|
||||||
LEFT JOIN age_counts_all aca
|
LEFT JOIN age_counts_all aca
|
||||||
ON aca.recruitment_id = tca.recruitment_id
|
ON aca.recruitment_id = tca.recruitment_id
|
||||||
AND aca.registered = tca.registered</sql>
|
AND aca.registered = tca.registered
|
||||||
|
AND aca.convicts = tca.convicts</sql>
|
||||||
<variables_active>Y</variables_active>
|
<variables_active>Y</variables_active>
|
||||||
<attributes/>
|
<attributes/>
|
||||||
<GUI>
|
<GUI>
|
||||||
|
|
@ -699,201 +494,6 @@ LEFT JOIN age_counts_all aca
|
||||||
<yloc>720</yloc>
|
<yloc>720</yloc>
|
||||||
</GUI>
|
</GUI>
|
||||||
</transform>
|
</transform>
|
||||||
<transform>
|
|
||||||
<name>Table input (person_registry) регион/мужчины 2</name>
|
|
||||||
<type>TableInput</type>
|
|
||||||
<description/>
|
|
||||||
<distribute>Y</distribute>
|
|
||||||
<custom_distribution/>
|
|
||||||
<copies>1</copies>
|
|
||||||
<partitioning>
|
|
||||||
<method>none</method>
|
|
||||||
<schema_name/>
|
|
||||||
</partitioning>
|
|
||||||
<connection>ervu_person_registry</connection>
|
|
||||||
<execute_each_row>N</execute_each_row>
|
|
||||||
<limit>0</limit>
|
|
||||||
<sql>WITH
|
|
||||||
ids AS (
|
|
||||||
-- Преобразуем строковый массив в таблицу UUID
|
|
||||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id
|
|
||||||
),
|
|
||||||
gender_separations AS (
|
|
||||||
SELECT 'MALE' AS gender
|
|
||||||
UNION ALL
|
|
||||||
SELECT 'FEMALE' AS gender
|
|
||||||
),
|
|
||||||
registered_separation AS (
|
|
||||||
SELECT 'true' AS registered
|
|
||||||
UNION ALL
|
|
||||||
SELECT 'false' AS registered
|
|
||||||
),
|
|
||||||
data_combinations AS (
|
|
||||||
-- Создаём все комбинации recruitment_id, gender и registered
|
|
||||||
SELECT
|
|
||||||
i.recruitment_id AS recruitment_id,
|
|
||||||
gs.gender,
|
|
||||||
rs.registered
|
|
||||||
FROM ids i
|
|
||||||
CROSS JOIN gender_separations gs
|
|
||||||
CROSS JOIN registered_separation rs
|
|
||||||
),
|
|
||||||
recruit_data AS (
|
|
||||||
SELECT
|
|
||||||
r.target_recruitment_id,
|
|
||||||
r.gender,
|
|
||||||
r.vu_current_info->>'isMilitaryRegistered' AS registered,
|
|
||||||
r.id AS recruit_id,
|
|
||||||
r.birth_date
|
|
||||||
FROM public.recruits r
|
|
||||||
LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
|
|
||||||
WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
|
|
||||||
AND r.gender IN ('MALE', 'FEMALE')
|
|
||||||
AND r.current_recruitment_id IS NOT NULL
|
|
||||||
AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
|
||||||
AND r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
|
||||||
),
|
|
||||||
total_count AS (
|
|
||||||
SELECT
|
|
||||||
dc.recruitment_id,
|
|
||||||
dc.gender,
|
|
||||||
dc.registered,
|
|
||||||
COUNT(rd.recruit_id) AS total
|
|
||||||
FROM data_combinations dc
|
|
||||||
LEFT JOIN recruit_data rd
|
|
||||||
ON rd.target_recruitment_id = dc.recruitment_id
|
|
||||||
AND rd.gender = dc.gender
|
|
||||||
AND rd.registered = dc.registered
|
|
||||||
GROUP BY dc.recruitment_id, dc.gender, dc.registered
|
|
||||||
),
|
|
||||||
total_count_all AS (
|
|
||||||
SELECT
|
|
||||||
r.target_recruitment_id AS recruitment_id,
|
|
||||||
r.vu_current_info->>'isMilitaryRegistered' AS registered,
|
|
||||||
COUNT(r.id) AS total
|
|
||||||
FROM public.recruits r
|
|
||||||
LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
|
|
||||||
WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
|
|
||||||
AND r.current_recruitment_id IS NOT NULL
|
|
||||||
AND r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
|
||||||
AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
|
||||||
GROUP BY r.target_recruitment_id, r.vu_current_info->>'isMilitaryRegistered'
|
|
||||||
),
|
|
||||||
age_counts AS (
|
|
||||||
SELECT
|
|
||||||
dc.recruitment_id,
|
|
||||||
dc.gender,
|
|
||||||
dc.registered,
|
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) = 17) AS "17_year_count",
|
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
|
||||||
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) >= 51) AS "51+_year_count"
|
|
||||||
FROM data_combinations dc
|
|
||||||
LEFT JOIN recruit_data rd
|
|
||||||
ON rd.target_recruitment_id = dc.recruitment_id
|
|
||||||
AND rd.gender = dc.gender
|
|
||||||
AND rd.registered = dc.registered
|
|
||||||
GROUP BY dc.recruitment_id, dc.gender, dc.registered
|
|
||||||
),
|
|
||||||
age_counts_all AS (
|
|
||||||
SELECT
|
|
||||||
r.target_recruitment_id AS recruitment_id,
|
|
||||||
r.vu_current_info->>'isMilitaryRegistered' AS registered,
|
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
|
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
|
||||||
COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) >= 51) AS "51+_year_count"
|
|
||||||
FROM public.recruits r
|
|
||||||
LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
|
|
||||||
WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
|
|
||||||
AND r.current_recruitment_id IS NOT NULL
|
|
||||||
AND r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
|
||||||
AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
|
||||||
GROUP BY r.target_recruitment_id, r.vu_current_info->>'isMilitaryRegistered'
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
current_date AS recording_date,
|
|
||||||
COALESCE(ac."17_year_count", 0) AS "17_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(ac."17_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "17_year_percent",
|
|
||||||
COALESCE(ac."18-26_year_count", 0) AS "18-26_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(ac."18-26_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "18-26_year_percent",
|
|
||||||
COALESCE(ac."27-30_year_count", 0) AS "27-30_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(ac."27-30_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "27-30_year_percent",
|
|
||||||
COALESCE(ac."31-35_year_count", 0) AS "31-35_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(ac."31-35_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "31-35_year_percent",
|
|
||||||
COALESCE(ac."36-40_year_count", 0) AS "36-40_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(ac."36-40_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "36-40_year_percent",
|
|
||||||
COALESCE(ac."41-45_year_count", 0) AS "41-45_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(ac."41-45_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "41-45_year_percent",
|
|
||||||
COALESCE(ac."46-50_year_count", 0) AS "46-50_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(ac."46-50_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "46-50_year_percent",
|
|
||||||
COALESCE(ac."51+_year_count", 0) AS "51+_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(ac."51+_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "51+_year_percent",
|
|
||||||
COALESCE(tc.total, 0) AS total_count,
|
|
||||||
dc.recruitment_id,
|
|
||||||
(CASE
|
|
||||||
WHEN dc.gender = 'MALE' THEN 'M'
|
|
||||||
WHEN dc.gender = 'FEMALE' THEN 'W'
|
|
||||||
ELSE null
|
|
||||||
END)::text AS gender,
|
|
||||||
'CONVICT' AS convicts,
|
|
||||||
dc.registered::text
|
|
||||||
FROM data_combinations dc
|
|
||||||
LEFT JOIN total_count tc
|
|
||||||
ON tc.recruitment_id = dc.recruitment_id
|
|
||||||
AND tc.gender = dc.gender
|
|
||||||
AND tc.registered = dc.registered
|
|
||||||
LEFT JOIN age_counts ac
|
|
||||||
ON ac.recruitment_id = dc.recruitment_id
|
|
||||||
AND ac.gender = dc.gender
|
|
||||||
AND ac.registered = dc.registered
|
|
||||||
UNION ALL
|
|
||||||
SELECT
|
|
||||||
current_date AS recording_date,
|
|
||||||
COALESCE(aca."17_year_count", 0) AS "17_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(aca."17_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "17_year_percent",
|
|
||||||
COALESCE(aca."18-26_year_count", 0) AS "18-26_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(aca."18-26_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "18-26_year_percent",
|
|
||||||
COALESCE(aca."27-30_year_count", 0) AS "27-30_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(aca."27-30_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "27-30_year_percent",
|
|
||||||
COALESCE(aca."31-35_year_count", 0) AS "31-35_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(aca."31-35_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "31-35_year_percent",
|
|
||||||
COALESCE(aca."36-40_year_count", 0) AS "36-40_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(aca."36-40_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "36-40_year_percent",
|
|
||||||
COALESCE(aca."41-45_year_count", 0) AS "41-45_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(aca."41-45_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "41-45_year_percent",
|
|
||||||
COALESCE(aca."46-50_year_count", 0) AS "46-50_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(aca."46-50_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "46-50_year_percent",
|
|
||||||
COALESCE(aca."51+_year_count", 0) AS "51+_year_count",
|
|
||||||
COALESCE(ROUND((COALESCE(aca."51+_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "51+_year_percent",
|
|
||||||
COALESCE(tca.total, 0) AS total_count,
|
|
||||||
dc.recruitment_id,
|
|
||||||
'ALL' AS gender,
|
|
||||||
'CONVICT' AS convicts,
|
|
||||||
dc.registered::text
|
|
||||||
FROM data_combinations dc
|
|
||||||
LEFT JOIN total_count_all tca
|
|
||||||
ON tca.recruitment_id = dc.recruitment_id
|
|
||||||
AND tca.registered = dc.registered
|
|
||||||
LEFT JOIN age_counts_all aca
|
|
||||||
ON aca.recruitment_id = dc.recruitment_id
|
|
||||||
AND aca.registered = dc.registered
|
|
||||||
</sql>
|
|
||||||
<variables_active>Y</variables_active>
|
|
||||||
<attributes/>
|
|
||||||
<GUI>
|
|
||||||
<xloc>1296</xloc>
|
|
||||||
<yloc>928</yloc>
|
|
||||||
</GUI>
|
|
||||||
</transform>
|
|
||||||
<transform_error_handling>
|
<transform_error_handling>
|
||||||
</transform_error_handling>
|
</transform_error_handling>
|
||||||
<attributes/>
|
<attributes/>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue