+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>
|
||||
<wait_until_finished>Y</wait_until_finished>
|
||||
<parallel>N</parallel>
|
||||
<xloc>896</xloc>
|
||||
<yloc>368</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>
|
||||
<xloc>944</xloc>
|
||||
<yloc>240</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
</actions>
|
||||
|
|
@ -192,20 +168,6 @@
|
|||
<evaluation>N</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</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>
|
||||
<from>job_info_recruits.hwf</from>
|
||||
<to>job_last_recording_date</to>
|
||||
|
|
|
|||
|
|
@ -41,26 +41,6 @@
|
|||
<to>Insert / update (total_registered.age) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</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>
|
||||
<transform>
|
||||
<name>Get variables 3 2 2</name>
|
||||
|
|
@ -95,39 +75,6 @@
|
|||
<yloc>800</yloc>
|
||||
</GUI>
|
||||
</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>
|
||||
<name>Insert / update (total_registered.age) 2</name>
|
||||
<type>InsertUpdate</type>
|
||||
|
|
@ -282,160 +229,6 @@
|
|||
<yloc>720</yloc>
|
||||
</GUI>
|
||||
</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>
|
||||
<name>Select values 3 2 2</name>
|
||||
<type>SelectValues</type>
|
||||
|
|
@ -490,60 +283,6 @@
|
|||
<yloc>800</yloc>
|
||||
</GUI>
|
||||
</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>
|
||||
<name>Table input (person_registry) регион/мужчины</name>
|
||||
<type>TableInput</type>
|
||||
|
|
@ -563,46 +302,103 @@ ids AS (
|
|||
-- Преобразуем строковый массив в таблицу UUID
|
||||
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 (
|
||||
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.vu_current_info->>'isMilitaryRegistered' AS registered,
|
||||
r.id AS recruit_id,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'ALL'
|
||||
END AS convicts,
|
||||
'true' AS registered,
|
||||
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)
|
||||
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 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 (
|
||||
SELECT
|
||||
rd.target_recruitment_id as recruitment_id,
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(rd.recruit_id) AS total
|
||||
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 (
|
||||
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.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
GROUP BY r.target_recruitment_id, r.vu_current_info->>'isMilitaryRegistered'
|
||||
rd.recruitment_id,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.registered, rd.convicts
|
||||
),
|
||||
age_counts AS (
|
||||
SELECT
|
||||
rd.target_recruitment_id as recruitment_id,
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
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)) 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",
|
||||
|
|
@ -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)) >= 51) AS "51+_year_count"
|
||||
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 (
|
||||
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.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
GROUP BY r.target_recruitment_id, r.vu_current_info->>'isMilitaryRegistered'
|
||||
r.recruitment_id,
|
||||
r.registered,
|
||||
r.convicts,
|
||||
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_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.recruit_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 31 AND 35) AS "31-35_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.recruit_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 46 AND 50) AS "46-50_year_count",
|
||||
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) >= 51) AS "51+_year_count"
|
||||
FROM recruit_data r
|
||||
GROUP BY r.recruitment_id, r.registered, r.convicts
|
||||
)
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
|
|
@ -657,13 +450,14 @@ SELECT
|
|||
WHEN tc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END)::text AS gender,
|
||||
'ALL' AS convicts,
|
||||
tc.convicts,
|
||||
tc.registered::text
|
||||
FROM total_count tc
|
||||
LEFT JOIN age_counts ac
|
||||
ON ac.recruitment_id = tc.recruitment_id
|
||||
AND ac.gender = tc.gender
|
||||
AND ac.registered = tc.registered
|
||||
AND ac.convicts = tc.convicts
|
||||
UNION ALL
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
|
|
@ -686,12 +480,13 @@ SELECT
|
|||
COALESCE(tca.total, 0) AS total_count,
|
||||
tca.recruitment_id,
|
||||
'ALL' AS gender,
|
||||
'ALL' AS convicts,
|
||||
tca.convicts,
|
||||
tca.registered::text
|
||||
FROM total_count_all tca
|
||||
LEFT JOIN age_counts_all aca
|
||||
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>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
|
|
@ -699,201 +494,6 @@ LEFT JOIN age_counts_all aca
|
|||
<yloc>720</yloc>
|
||||
</GUI>
|
||||
</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>
|
||||
<attributes/>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue