fix
This commit is contained in:
parent
28e48951f6
commit
28aadf1a59
35 changed files with 10591 additions and 539 deletions
|
|
@ -373,7 +373,7 @@
|
|||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.age(m_c).hpl</filename>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.age(m_c)/total_registered.age(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
|
|
@ -389,7 +389,7 @@
|
|||
<wait_until_finished>Y</wait_until_finished>
|
||||
<parallel>N</parallel>
|
||||
<xloc>320</xloc>
|
||||
<yloc>1712</yloc>
|
||||
<yloc>1632</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -399,7 +399,7 @@
|
|||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>0</xloc>
|
||||
<yloc>1712</yloc>
|
||||
<yloc>1632</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -413,7 +413,7 @@
|
|||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.marital_status(m_c).hpl</filename>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.marital_status(m_c)/total_registered.marital_status(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
|
|
@ -429,7 +429,7 @@
|
|||
<wait_until_finished>Y</wait_until_finished>
|
||||
<parallel>N</parallel>
|
||||
<xloc>320</xloc>
|
||||
<yloc>1776</yloc>
|
||||
<yloc>1696</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -439,7 +439,7 @@
|
|||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>0</xloc>
|
||||
<yloc>1776</yloc>
|
||||
<yloc>1696</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -453,7 +453,7 @@
|
|||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.education_level(m_c).hpl</filename>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.education_level(m_c)/total_registered.education_level(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
|
|
@ -469,7 +469,7 @@
|
|||
<wait_until_finished>Y</wait_until_finished>
|
||||
<parallel>N</parallel>
|
||||
<xloc>320</xloc>
|
||||
<yloc>1840</yloc>
|
||||
<yloc>1760</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -479,7 +479,7 @@
|
|||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>0</xloc>
|
||||
<yloc>1840</yloc>
|
||||
<yloc>1760</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -493,7 +493,7 @@
|
|||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.busyness(m_c).hpl</filename>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.busyness(m_c)/total_registered.busyness(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
|
|
@ -509,7 +509,7 @@
|
|||
<wait_until_finished>Y</wait_until_finished>
|
||||
<parallel>N</parallel>
|
||||
<xloc>320</xloc>
|
||||
<yloc>1904</yloc>
|
||||
<yloc>1824</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -519,7 +519,7 @@
|
|||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>0</xloc>
|
||||
<yloc>1904</yloc>
|
||||
<yloc>1824</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -719,7 +719,7 @@ WHERE recording_date = current_date
|
|||
<useVariableSubstitution>N</useVariableSubstitution>
|
||||
<parallel>N</parallel>
|
||||
<xloc>624</xloc>
|
||||
<yloc>1712</yloc>
|
||||
<yloc>1632</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -737,7 +737,7 @@ WHERE recording_date = current_date
|
|||
<useVariableSubstitution>N</useVariableSubstitution>
|
||||
<parallel>N</parallel>
|
||||
<xloc>624</xloc>
|
||||
<yloc>1776</yloc>
|
||||
<yloc>1696</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -754,7 +754,7 @@ WHERE recording_date = current_date
|
|||
<useVariableSubstitution>N</useVariableSubstitution>
|
||||
<parallel>N</parallel>
|
||||
<xloc>624</xloc>
|
||||
<yloc>1840</yloc>
|
||||
<yloc>1760</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -772,7 +772,7 @@ WHERE recording_date = current_date
|
|||
<useVariableSubstitution>N</useVariableSubstitution>
|
||||
<parallel>N</parallel>
|
||||
<xloc>624</xloc>
|
||||
<yloc>1904</yloc>
|
||||
<yloc>1824</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
|
|
@ -897,27 +897,34 @@ AND postponement_granted IS NULL;</sql>
|
|||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/main_dashboard.waiting_registration(m_c)/main_dashboard.waiting_registration(m_c).hwf</filename>
|
||||
<logext/>
|
||||
<logfile/>
|
||||
<loglevel>Nothing</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_1</name>
|
||||
<stream_name>PART_RECRUITMENT_1</stream_name>
|
||||
<value/>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_2</name>
|
||||
<stream_name>PART_RECRUITMENT_2</stream_name>
|
||||
<value/>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_3</name>
|
||||
<stream_name>PART_RECRUITMENT_3</stream_name>
|
||||
<value/>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_4</name>
|
||||
<stream_name>PART_RECRUITMENT_4</stream_name>
|
||||
<value/>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_5</name>
|
||||
<stream_name>PART_RECRUITMENT_5</stream_name>
|
||||
<value/>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
|
|
@ -1456,7 +1463,7 @@ WHERE recording_date = current_date
|
|||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success total_registered.child_minor(m_c)</name>
|
||||
<name>Success total_registered.child_minor(m_c)_pll</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
|
|
@ -1465,6 +1472,293 @@ WHERE recording_date = current_date
|
|||
<yloc>1712</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>SQL total_registered.age 2</name>
|
||||
<description/>
|
||||
<type>SQL</type>
|
||||
<attributes/>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sendOneStatement>N</sendOneStatement>
|
||||
<sql>DELETE FROM total_registered.age
|
||||
WHERE recording_date = current_date
|
||||
AND schema IN ('Department', 'MD_LVL', 'REG_LVL', 'empty', 'Organization', 'Region')
|
||||
</sql>
|
||||
<sqlfromfile>N</sqlfromfile>
|
||||
<useVariableSubstitution>N</useVariableSubstitution>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1712</xloc>
|
||||
<yloc>1792</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.age(m_c).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>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.age(m_c)/total_registered.age(m_c).hwf</filename>
|
||||
<loglevel>Nothing</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_1</name>
|
||||
<stream_name>PART_RECRUITMENT_1</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_2</name>
|
||||
<stream_name>PART_RECRUITMENT_2</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_3</name>
|
||||
<stream_name>PART_RECRUITMENT_3</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_4</name>
|
||||
<stream_name>PART_RECRUITMENT_4</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_5</name>
|
||||
<stream_name>PART_RECRUITMENT_5</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>2032</xloc>
|
||||
<yloc>1792</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success total_registered.age(m_c)_pll</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>2592</xloc>
|
||||
<yloc>1792</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>SQL total_registered.marital_status 2</name>
|
||||
<description/>
|
||||
<type>SQL</type>
|
||||
<attributes/>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sendOneStatement>N</sendOneStatement>
|
||||
<sql>DELETE FROM total_registered.marital_status
|
||||
WHERE recording_date = current_date
|
||||
AND schema IN ('Department', 'MD_LVL', 'REG_LVL', 'empty', 'Organization', 'Region')
|
||||
</sql>
|
||||
<sqlfromfile>N</sqlfromfile>
|
||||
<useVariableSubstitution>N</useVariableSubstitution>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1712</xloc>
|
||||
<yloc>1872</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.marital_status(m_c).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>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.marital_status(m_c)/total_registered.marital_status(m_c).hwf</filename>
|
||||
<loglevel>Nothing</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_1</name>
|
||||
<stream_name>PART_RECRUITMENT_1</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_2</name>
|
||||
<stream_name>PART_RECRUITMENT_2</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_3</name>
|
||||
<stream_name>PART_RECRUITMENT_3</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_4</name>
|
||||
<stream_name>PART_RECRUITMENT_4</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_5</name>
|
||||
<stream_name>PART_RECRUITMENT_5</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>2032</xloc>
|
||||
<yloc>1872</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success total_registered.marital_status(m_c)_pll</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>2592</xloc>
|
||||
<yloc>1872</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>SQL total_registered.education_level 2</name>
|
||||
<description/>
|
||||
<type>SQL</type>
|
||||
<attributes/>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sendOneStatement>N</sendOneStatement>
|
||||
<sql>DELETE FROM total_registered.education_level
|
||||
WHERE recording_date = current_date
|
||||
AND schema IN ('Department', 'MD_LVL', 'REG_LVL', 'empty', 'Organization', 'Region')</sql>
|
||||
<sqlfromfile>N</sqlfromfile>
|
||||
<useVariableSubstitution>N</useVariableSubstitution>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1712</xloc>
|
||||
<yloc>1952</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.education_level(m_c).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>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.education_level(m_c)/total_registered.education_level(m_c).hwf</filename>
|
||||
<loglevel>Nothing</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_1</name>
|
||||
<stream_name>PART_RECRUITMENT_1</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_2</name>
|
||||
<stream_name>PART_RECRUITMENT_2</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_3</name>
|
||||
<stream_name>PART_RECRUITMENT_3</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_4</name>
|
||||
<stream_name>PART_RECRUITMENT_4</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_5</name>
|
||||
<stream_name>PART_RECRUITMENT_5</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>2032</xloc>
|
||||
<yloc>1952</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success total_registered.education_level(m_c)_pll</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>2592</xloc>
|
||||
<yloc>1952</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>SQL total_registered.busyness 2</name>
|
||||
<description/>
|
||||
<type>SQL</type>
|
||||
<attributes/>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sendOneStatement>N</sendOneStatement>
|
||||
<sql>DELETE FROM total_registered.busyness
|
||||
WHERE recording_date = current_date
|
||||
AND schema IN ('Department', 'MD_LVL', 'REG_LVL', 'empty', 'Organization', 'Region')
|
||||
</sql>
|
||||
<sqlfromfile>N</sqlfromfile>
|
||||
<useVariableSubstitution>N</useVariableSubstitution>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1712</xloc>
|
||||
<yloc>2032</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.busyness(m_c).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>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.busyness(m_c)/total_registered.busyness(m_c).hwf</filename>
|
||||
<loglevel>Nothing</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_1</name>
|
||||
<stream_name>PART_RECRUITMENT_1</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_2</name>
|
||||
<stream_name>PART_RECRUITMENT_2</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_3</name>
|
||||
<stream_name>PART_RECRUITMENT_3</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_4</name>
|
||||
<stream_name>PART_RECRUITMENT_4</stream_name>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<name>ARR_PR_5</name>
|
||||
<stream_name>PART_RECRUITMENT_5</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>2032</xloc>
|
||||
<yloc>2032</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success total_registered.busyness(m_c)_pll</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>2592</xloc>
|
||||
<yloc>2032</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
</actions>
|
||||
<hops>
|
||||
<hop>
|
||||
|
|
@ -1652,7 +1946,7 @@ WHERE recording_date = current_date
|
|||
<hop>
|
||||
<from>array_recruitments.hpl</from>
|
||||
<to>SQL total_registered.age</to>
|
||||
<enabled>Y</enabled>
|
||||
<enabled>N</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
|
|
@ -1666,7 +1960,7 @@ WHERE recording_date = current_date
|
|||
<hop>
|
||||
<from>array_recruitments.hpl</from>
|
||||
<to>SQL total_registered.marital_status</to>
|
||||
<enabled>Y</enabled>
|
||||
<enabled>N</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
|
|
@ -1680,7 +1974,7 @@ WHERE recording_date = current_date
|
|||
<hop>
|
||||
<from>array_recruitments.hpl</from>
|
||||
<to>SQL total_registered.education_level</to>
|
||||
<enabled>Y</enabled>
|
||||
<enabled>N</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
|
|
@ -1694,7 +1988,7 @@ WHERE recording_date = current_date
|
|||
<hop>
|
||||
<from>array_recruitments.hpl</from>
|
||||
<to>SQL total_registered.busyness</to>
|
||||
<enabled>Y</enabled>
|
||||
<enabled>N</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
|
|
@ -1722,7 +2016,7 @@ WHERE recording_date = current_date
|
|||
<hop>
|
||||
<from>Start</from>
|
||||
<to>main_dashboard.recruitment_campaign(m_c).hwf</to>
|
||||
<enabled>N</enabled>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
|
|
@ -1750,7 +2044,7 @@ WHERE recording_date = current_date
|
|||
<hop>
|
||||
<from>Start</from>
|
||||
<to>recruitment_campaign.subpoenas(m_c).hwf</to>
|
||||
<enabled>N</enabled>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
|
|
@ -1938,7 +2232,91 @@ WHERE recording_date = current_date
|
|||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.child_minor(m_c).hwf</from>
|
||||
<to>Success total_registered.child_minor(m_c)</to>
|
||||
<to>Success total_registered.child_minor(m_c)_pll</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>N</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>SQL total_registered.age 2</from>
|
||||
<to>total_registered.age(m_c).hwf</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>N</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.age(m_c).hwf</from>
|
||||
<to>Success total_registered.age(m_c)_pll</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>N</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>array_recruitment_for_parallel.hpl</from>
|
||||
<to>SQL total_registered.age 2</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>array_recruitment_for_parallel.hpl</from>
|
||||
<to>SQL total_registered.marital_status 2</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>SQL total_registered.marital_status 2</from>
|
||||
<to>total_registered.marital_status(m_c).hwf</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>N</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.marital_status(m_c).hwf</from>
|
||||
<to>Success total_registered.marital_status(m_c)_pll</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>N</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>array_recruitment_for_parallel.hpl</from>
|
||||
<to>SQL total_registered.education_level 2</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>SQL total_registered.education_level 2</from>
|
||||
<to>total_registered.education_level(m_c).hwf</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>N</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.education_level(m_c).hwf</from>
|
||||
<to>Success total_registered.education_level(m_c)_pll</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>N</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>array_recruitment_for_parallel.hpl</from>
|
||||
<to>SQL total_registered.busyness 2</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>SQL total_registered.busyness 2</from>
|
||||
<to>total_registered.busyness(m_c).hwf</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>N</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.busyness(m_c).hwf</from>
|
||||
<to>Success total_registered.busyness(m_c)_pll</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>N</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,154 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>array_season_recruitments_all_parallel</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2025/03/20 10:44:35.298</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2025/03/20 10:44:35.298</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input остальные</from>
|
||||
<to>Copy rows to result 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Copy rows to result 2</name>
|
||||
<type>RowsToResult</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>832</xloc>
|
||||
<yloc>352</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input остальные</name>
|
||||
<type>TableInput</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
<limit/>
|
||||
<sql>WITH ids AS (
|
||||
SELECT idm_id,
|
||||
NTILE(5) OVER (ORDER BY idm_id) AS part -- Разбиваем на 5 частей
|
||||
FROM ervu_dashboard.recruitment
|
||||
WHERE schema IN ('Department', 'Organization', 'Region')
|
||||
AND idm_id NOT IN (
|
||||
'55158cc6-1342-4701-ab2b-855a6389906d'::UUID, -- Военный комиссариат Провиденского и Чукотского районов Чукотского автономного округа
|
||||
'd35584cf-8405-42ea-9944-25bfe5725347', -- Военный комиссариат Охотского Аяно-Майского и Тугуро-Чумиканского районов Хабаровского края
|
||||
'b960d9a3-97c5-42ff-9fa7-1843114392a0', -- Военный комиссариат Тигильского Карагинского Олюторского и Пенжинского районов Камчатского края
|
||||
'ab335d7b-7966-470d-89b3-72cee950839d', -- Военный комиссариат Оймяконского и Момского улусов Республики Саха (Якутия)
|
||||
'1dea48be-40fb-42bd-9df8-14d0cfd3fd12', -- Военный комиссариат Нижнеколымского и Среднеколымского улусов Республики Саха (Якутия)
|
||||
'018b8e04-2714-402a-961b-39877b9ee698', -- Военный комиссариат Верхоянского и Эвено-Бытантайского улусов Республики Саха (Якутия)
|
||||
'18e818af-ef45-49ee-aea2-d0f3516ddf1d', -- Военный комиссариат Верхнеколымского улуса Республики Саха (Якутия)
|
||||
'b2ec295c-47a4-4be9-a6f8-827096f9857d', -- Военный комиссариат Булунского и Жиганского улусов Республики Саха (Якутия)
|
||||
'eaffdb79-767f-405c-a1b1-b48bdc63add8', -- Военный комиссариат Усть-Янского Аллаиховского и Абыйского улусов Республики Саха (Якутия)
|
||||
'354f7fbd-467f-4f41-aaad-f0e2e139527e', -- Военный комиссариат города Воркута Республики Коми
|
||||
'ce2b0297-d1e8-422a-8367-b7e3a5cc7a40', -- Военный комиссариат города Инта Республики Коми
|
||||
'c023af4a-ad27-4539-a1f9-7a3251634fdb', -- Военный комиссариат города Печора и Печорского района Республики Коми
|
||||
'0e44335f-02db-43ac-b713-f09532e675a3', -- Военный комиссариат городов Ухта Вуктыл и Сосногорск Вуктыльского и Сосногорского районов Республики Коми
|
||||
'e55859e6-9d34-47b7-a969-efc8ceea708b', -- Военный комиссариат Ижемского района Республики Коми
|
||||
'b9d1002f-d2a7-4d2f-910b-637b2cf332dd', -- Военный комиссариат Княжпогостского и Усть-Вымского районов Республики Коми
|
||||
'ef2da2e5-0cc1-479c-b2de-c334c95b5514', -- Военный комиссариат Сысольского Койгородского и Прилузского районов Республики Коми
|
||||
'53851a38-fc95-400b-9ff7-00b4dcad2918', -- Военный комиссариат города Сыктывкар Сыктывдинского и Корткеросского районов Республики Коми
|
||||
'2dc1de3a-712a-4376-8baf-7833a43f6678', -- Военный комиссариат Троицко-Печорского района Республики Коми
|
||||
'a6db3dba-65e3-4ad9-a76e-a846efec2a2d', -- Военный комиссариат Удорского района Республики Коми
|
||||
'630ba6cd-c979-4d35-b128-f6e2527949ef', -- Военный комиссариат города Усинск и Усинского района Республики Коми
|
||||
'231361d3-3d34-4409-8a30-20c4b013d62c', -- Военный комиссариат Усть-Куломского района Республики Коми
|
||||
'6466af82-e8be-416d-88c9-cef02f99fef0', -- Военный комиссариат Усть-Цилемского района Республики Коми
|
||||
'83c89e3d-aa69-43bc-857c-59ce405b9e1e', -- Военный комиссариат Туруханского района и города Игарка Красноярского края
|
||||
'ec2c03cd-9c13-4980-9f6d-ba4a93a9a411', -- Военный комиссариат города Лесосибирск и Мотыгинского района Красноярского края
|
||||
'd386bf1f-42bd-436f-8b14-288b2cbe1046', -- какой то Северо-Енисейский безымянный военкомат
|
||||
'61b5758c-c72b-426e-a96f-e146d89197c2', -- Военный комиссариат города Норильск и Таймырского Долгано-Ненецкого района Красноярского края
|
||||
'9f1a1e68-2fd2-478c-b6ba-b04cc6b752b3', -- Военный комиссариат Эвенкийского района Красноярского края
|
||||
'7cb704d4-b600-4ce9-bddf-723e1b024f98', -- Военный комиссариат Гайнского района Пермского края
|
||||
'be515915-26e8-41c8-af21-3b53d991d632', -- Военный комиссариат Кочевского и Косинского районов Пермского края
|
||||
'28061db5-22ef-46f6-a2af-043c47288885', -- Военный комиссариат Ненецкого автономного округа
|
||||
'ce08e909-5a14-480f-b931-bff172872ac6', -- ВК городских округов Курильский и Северо-Курильский Сахалинской области
|
||||
'f578c2c0-72fe-4f3b-bcf7-659bda20f511', -- Военный комиссариат города Губкинский Пуровского и Красноселькупского районов Ямало-Ненецкого автономного округа
|
||||
'5a0c4a0c-1d00-4528-9dcc-73c8d6dd52b9', -- Военный комиссариат города Лабытнанги и Шурышкарского района Ямало-Ненецкого автономного округа
|
||||
'50af0e45-872b-48e8-bf74-c13b2162e3ce', -- Военный комиссариат городов Ноябрьск и Муравленко Ямало-Ненецкого автономного округа
|
||||
'a8852d04-516d-4ea4-9979-5eb149e9ac7e', -- Военный комиссариат города Новый Уренгой Ямало-Ненецкого автономного округа
|
||||
'9464d4df-9402-4eb2-abb2-c68b079ad5cf', -- Военный комиссариат города Салехард и Приуральского района Ямало-Ненецкого автономного округа
|
||||
'b778245a-0257-4d93-a51c-fa7005e4a480', -- Военный комиссариат города Надым и Надымского района Ямало-Ненецкого автономного округа
|
||||
'2e18cd11-bbca-406d-a2b8-0a89cbb2046e', -- Военный комиссариат Тазовского района Ямало-Ненецкого автономного округа
|
||||
'a4126a2d-3412-47cd-aa90-caa62e202c7f' -- Военный комиссариат Ямальского района Ямало-Ненецкого автономного округа
|
||||
)
|
||||
),
|
||||
grouped AS (
|
||||
SELECT
|
||||
array_agg(idm_id) FILTER (WHERE part = 1) AS part_1,
|
||||
array_agg(idm_id) FILTER (WHERE part = 2) AS part_2,
|
||||
array_agg(idm_id) FILTER (WHERE part = 3) AS part_3,
|
||||
array_agg(idm_id) FILTER (WHERE part = 4) AS part_4,
|
||||
array_agg(idm_id) FILTER (WHERE part = 5) AS part_5
|
||||
FROM ids
|
||||
),
|
||||
split_parts AS (
|
||||
SELECT
|
||||
gs.row_num,
|
||||
(SELECT array_agg(val) FROM unnest(part_1) WITH ORDINALITY AS t(val, ord)
|
||||
WHERE ord > array_length(part_1, 1) * (gs.row_num - 1) / 2
|
||||
AND ord <= array_length(part_1, 1) * gs.row_num / 2) AS PART_RECRUITMENT_1,
|
||||
(SELECT array_agg(val) FROM unnest(part_2) WITH ORDINALITY AS t(val, ord)
|
||||
WHERE ord > array_length(part_2, 1) * (gs.row_num - 1) / 2
|
||||
AND ord <= array_length(part_2, 1) * gs.row_num / 2) AS PART_RECRUITMENT_2,
|
||||
(SELECT array_agg(val) FROM unnest(part_3) WITH ORDINALITY AS t(val, ord)
|
||||
WHERE ord > array_length(part_3, 1) * (gs.row_num - 1) / 2
|
||||
AND ord <= array_length(part_3, 1) * gs.row_num / 2) AS PART_RECRUITMENT_3,
|
||||
(SELECT array_agg(val) FROM unnest(part_4) WITH ORDINALITY AS t(val, ord)
|
||||
WHERE ord > array_length(part_4, 1) * (gs.row_num - 1) / 2
|
||||
AND ord <= array_length(part_4, 1) * gs.row_num / 2) AS PART_RECRUITMENT_4,
|
||||
(SELECT array_agg(val) FROM unnest(part_5) WITH ORDINALITY AS t(val, ord)
|
||||
WHERE ord > array_length(part_5, 1) * (gs.row_num - 1) / 2
|
||||
AND ord <= array_length(part_5, 1) * gs.row_num / 2) AS PART_RECRUITMENT_5
|
||||
FROM grouped
|
||||
CROSS JOIN generate_series(1, 2) gs(row_num)
|
||||
)
|
||||
SELECT
|
||||
PART_RECRUITMENT_1,
|
||||
PART_RECRUITMENT_2,
|
||||
PART_RECRUITMENT_3,
|
||||
PART_RECRUITMENT_4,
|
||||
PART_RECRUITMENT_5
|
||||
FROM split_parts;</sql>
|
||||
<variables_active>N</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>512</xloc>
|
||||
<yloc>352</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,312 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<workflow>
|
||||
<name>total_registered.age(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<workflow_version/>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2025/04/01 09:55:15.265</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2025/04/01 09:55:15.265</modified_date>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<actions>
|
||||
<action>
|
||||
<name>Start</name>
|
||||
<description/>
|
||||
<type>SPECIAL</type>
|
||||
<attributes/>
|
||||
<DayOfMonth>1</DayOfMonth>
|
||||
<hour>12</hour>
|
||||
<intervalMinutes>60</intervalMinutes>
|
||||
<intervalSeconds>0</intervalSeconds>
|
||||
<minutes>0</minutes>
|
||||
<repeat>N</repeat>
|
||||
<schedulerType>0</schedulerType>
|
||||
<weekDay>1</weekDay>
|
||||
<parallel>Y</parallel>
|
||||
<xloc>544</xloc>
|
||||
<yloc>400</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.age_pr1(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.age(m_c)/total_registered.age_pr1(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_1</name>
|
||||
<stream_name>PART_RECRUITMENT_1</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>992</xloc>
|
||||
<yloc>240</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.age_pr2(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.age(m_c)/total_registered.age_pr2(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_2</name>
|
||||
<stream_name>PART_RECRUITMENT_2</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>992</xloc>
|
||||
<yloc>320</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.age_pr3(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.age(m_c)/total_registered.age_pr3(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_3</name>
|
||||
<stream_name>PART_RECRUITMENT_3</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>992</xloc>
|
||||
<yloc>400</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.age_pr4(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.age(m_c)/total_registered.age_pr4(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_4</name>
|
||||
<stream_name>PART_RECRUITMENT_4</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>992</xloc>
|
||||
<yloc>480</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.age_pr5(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.age(m_c)/total_registered.age_pr5(m_c).hpl</filename>
|
||||
<logext/>
|
||||
<logfile/>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_5</name>
|
||||
<stream_name>PART_RECRUITMENT_5</stream_name>
|
||||
<value/>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>992</xloc>
|
||||
<yloc>560</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1200</xloc>
|
||||
<yloc>240</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 2</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1200</xloc>
|
||||
<yloc>320</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 3</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1200</xloc>
|
||||
<yloc>400</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 4</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1200</xloc>
|
||||
<yloc>480</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 5</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1200</xloc>
|
||||
<yloc>560</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
</actions>
|
||||
<hops>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.age_pr1(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.age_pr2(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.age_pr3(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.age_pr4(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.age_pr5(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.age_pr1(m_c).hpl</from>
|
||||
<to>Success</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.age_pr2(m_c).hpl</from>
|
||||
<to>Success 2</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.age_pr3(m_c).hpl</from>
|
||||
<to>Success 3</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.age_pr4(m_c).hpl</from>
|
||||
<to>Success 4</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.age_pr5(m_c).hpl</from>
|
||||
<to>Success 5</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
</hops>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<attributes/>
|
||||
</workflow>
|
||||
|
|
@ -0,0 +1,446 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.age_pr1(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) регион/мужчины</from>
|
||||
<to>Insert / update (total_registered.age) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.age) 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>720</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) регион/мужчины</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_PR_1}'), ','))::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', '12.7', '8.2', '8.3')) max_date_time
|
||||
from recruits_history
|
||||
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_n 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
|
||||
),
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'true' 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.current_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
|
||||
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 'NOTCONVICT'
|
||||
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)
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
coalesce (r.target_recruitment_id, rh.target_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
'ALL' 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)
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
'ALL' AS convicts,
|
||||
'true' 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.current_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)
|
||||
*/
|
||||
|
||||
),
|
||||
total_count AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||
),
|
||||
total_count_all AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.registered, rd.convicts
|
||||
),
|
||||
age_counts AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) = 17) AS "17_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) >= 51) AS "51+_year_count"
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||
),
|
||||
age_counts_all AS (
|
||||
SELECT
|
||||
r.recruitment_id,
|
||||
r.registered,
|
||||
r.convicts,
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||
COUNT(distinct 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,
|
||||
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,
|
||||
tc.recruitment_id,
|
||||
(CASE
|
||||
WHEN tc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END)::text AS gender,
|
||||
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,
|
||||
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,
|
||||
tca.recruitment_id,
|
||||
'ALL' AS gender,
|
||||
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
|
||||
AND aca.convicts = tca.convicts</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1296</xloc>
|
||||
<yloc>720</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,446 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.age_pr2(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) регион/мужчины</from>
|
||||
<to>Insert / update (total_registered.age) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.age) 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>720</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) регион/мужчины</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_PR_2}'), ','))::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', '12.7', '8.2', '8.3')) max_date_time
|
||||
from recruits_history
|
||||
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_n 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
|
||||
),
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'true' 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.current_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
|
||||
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 'NOTCONVICT'
|
||||
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)
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
coalesce (r.target_recruitment_id, rh.target_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
'ALL' 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)
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
'ALL' AS convicts,
|
||||
'true' 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.current_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)
|
||||
*/
|
||||
|
||||
),
|
||||
total_count AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||
),
|
||||
total_count_all AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.registered, rd.convicts
|
||||
),
|
||||
age_counts AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) = 17) AS "17_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) >= 51) AS "51+_year_count"
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||
),
|
||||
age_counts_all AS (
|
||||
SELECT
|
||||
r.recruitment_id,
|
||||
r.registered,
|
||||
r.convicts,
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||
COUNT(distinct 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,
|
||||
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,
|
||||
tc.recruitment_id,
|
||||
(CASE
|
||||
WHEN tc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END)::text AS gender,
|
||||
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,
|
||||
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,
|
||||
tca.recruitment_id,
|
||||
'ALL' AS gender,
|
||||
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
|
||||
AND aca.convicts = tca.convicts</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1296</xloc>
|
||||
<yloc>720</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,446 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.age_pr3(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) регион/мужчины</from>
|
||||
<to>Insert / update (total_registered.age) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.age) 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>720</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) регион/мужчины</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_PR_3}'), ','))::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', '12.7', '8.2', '8.3')) max_date_time
|
||||
from recruits_history
|
||||
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_n 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
|
||||
),
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'true' 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.current_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
|
||||
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 'NOTCONVICT'
|
||||
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)
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
coalesce (r.target_recruitment_id, rh.target_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
'ALL' 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)
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
'ALL' AS convicts,
|
||||
'true' 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.current_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)
|
||||
*/
|
||||
|
||||
),
|
||||
total_count AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||
),
|
||||
total_count_all AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.registered, rd.convicts
|
||||
),
|
||||
age_counts AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) = 17) AS "17_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) >= 51) AS "51+_year_count"
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||
),
|
||||
age_counts_all AS (
|
||||
SELECT
|
||||
r.recruitment_id,
|
||||
r.registered,
|
||||
r.convicts,
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||
COUNT(distinct 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,
|
||||
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,
|
||||
tc.recruitment_id,
|
||||
(CASE
|
||||
WHEN tc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END)::text AS gender,
|
||||
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,
|
||||
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,
|
||||
tca.recruitment_id,
|
||||
'ALL' AS gender,
|
||||
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
|
||||
AND aca.convicts = tca.convicts</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1296</xloc>
|
||||
<yloc>720</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,446 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.age_pr4(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) регион/мужчины</from>
|
||||
<to>Insert / update (total_registered.age) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.age) 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>720</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) регион/мужчины</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_PR_4}'), ','))::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', '12.7', '8.2', '8.3')) max_date_time
|
||||
from recruits_history
|
||||
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_n 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
|
||||
),
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'true' 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.current_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
|
||||
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 'NOTCONVICT'
|
||||
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)
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
coalesce (r.target_recruitment_id, rh.target_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
'ALL' 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)
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
'ALL' AS convicts,
|
||||
'true' 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.current_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)
|
||||
*/
|
||||
|
||||
),
|
||||
total_count AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||
),
|
||||
total_count_all AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.registered, rd.convicts
|
||||
),
|
||||
age_counts AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) = 17) AS "17_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) >= 51) AS "51+_year_count"
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||
),
|
||||
age_counts_all AS (
|
||||
SELECT
|
||||
r.recruitment_id,
|
||||
r.registered,
|
||||
r.convicts,
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||
COUNT(distinct 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,
|
||||
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,
|
||||
tc.recruitment_id,
|
||||
(CASE
|
||||
WHEN tc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END)::text AS gender,
|
||||
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,
|
||||
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,
|
||||
tca.recruitment_id,
|
||||
'ALL' AS gender,
|
||||
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
|
||||
AND aca.convicts = tca.convicts</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1296</xloc>
|
||||
<yloc>720</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,446 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.age_pr5(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) регион/мужчины</from>
|
||||
<to>Insert / update (total_registered.age) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.age) 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>720</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) регион/мужчины</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_PR_5}'), ','))::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', '12.7', '8.2', '8.3')) max_date_time
|
||||
from recruits_history
|
||||
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_n 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
|
||||
),
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'true' 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.current_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
|
||||
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 'NOTCONVICT'
|
||||
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)
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
coalesce (r.target_recruitment_id, rh.target_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
'ALL' 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)
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
'ALL' AS convicts,
|
||||
'true' 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.current_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)
|
||||
*/
|
||||
|
||||
),
|
||||
total_count AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||
),
|
||||
total_count_all AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.registered, rd.convicts
|
||||
),
|
||||
age_counts AS (
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.registered,
|
||||
rd.convicts,
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) = 17) AS "17_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) >= 51) AS "51+_year_count"
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
|
||||
),
|
||||
age_counts_all AS (
|
||||
SELECT
|
||||
r.recruitment_id,
|
||||
r.registered,
|
||||
r.convicts,
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
|
||||
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
|
||||
COUNT(distinct 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,
|
||||
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,
|
||||
tc.recruitment_id,
|
||||
(CASE
|
||||
WHEN tc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END)::text AS gender,
|
||||
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,
|
||||
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,
|
||||
tca.recruitment_id,
|
||||
'ALL' AS gender,
|
||||
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
|
||||
AND aca.convicts = tca.convicts</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1296</xloc>
|
||||
<yloc>720</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,312 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<workflow>
|
||||
<name>total_registered.busyness(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<workflow_version/>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2025/04/01 10:45:43.074</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2025/04/01 10:45:43.074</modified_date>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<actions>
|
||||
<action>
|
||||
<name>Start</name>
|
||||
<description/>
|
||||
<type>SPECIAL</type>
|
||||
<attributes/>
|
||||
<DayOfMonth>1</DayOfMonth>
|
||||
<hour>12</hour>
|
||||
<intervalMinutes>60</intervalMinutes>
|
||||
<intervalSeconds>0</intervalSeconds>
|
||||
<minutes>0</minutes>
|
||||
<repeat>N</repeat>
|
||||
<schedulerType>0</schedulerType>
|
||||
<weekDay>1</weekDay>
|
||||
<parallel>Y</parallel>
|
||||
<xloc>704</xloc>
|
||||
<yloc>432</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.busyness_pr1(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr1(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_1</name>
|
||||
<stream_name>PART_RECRUITMENT_1</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>1088</xloc>
|
||||
<yloc>272</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.busyness_pr2(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr2(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_2</name>
|
||||
<stream_name>PART_RECRUITMENT_2</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>1088</xloc>
|
||||
<yloc>352</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.busyness_pr3(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr3(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_3</name>
|
||||
<stream_name>PART_RECRUITMENT_3</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>1088</xloc>
|
||||
<yloc>432</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.busyness_pr4(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr4(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_4</name>
|
||||
<stream_name>PART_RECRUITMENT_4</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>1088</xloc>
|
||||
<yloc>512</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.busyness_pr5(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr5(m_c).hpl</filename>
|
||||
<logext/>
|
||||
<logfile/>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_5</name>
|
||||
<stream_name>PART_RECRUITMENT_5</stream_name>
|
||||
<value/>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>1088</xloc>
|
||||
<yloc>592</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1360</xloc>
|
||||
<yloc>272</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 2</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1360</xloc>
|
||||
<yloc>352</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 3</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1360</xloc>
|
||||
<yloc>432</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 4</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1360</xloc>
|
||||
<yloc>512</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 5</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1360</xloc>
|
||||
<yloc>592</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
</actions>
|
||||
<hops>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.busyness_pr1(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.busyness_pr2(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.busyness_pr3(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.busyness_pr4(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.busyness_pr5(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.busyness_pr1(m_c).hpl</from>
|
||||
<to>Success</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.busyness_pr2(m_c).hpl</from>
|
||||
<to>Success 2</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.busyness_pr3(m_c).hpl</from>
|
||||
<to>Success 3</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.busyness_pr4(m_c).hpl</from>
|
||||
<to>Success 4</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.busyness_pr5(m_c).hpl</from>
|
||||
<to>Success 5</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
</hops>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<attributes/>
|
||||
</workflow>
|
||||
|
|
@ -0,0 +1,691 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.busyness_pr1(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Get variables 3 2 2</from>
|
||||
<to>Select values 3 2 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 2</from>
|
||||
<to>Insert / update (total_registered.busyness) 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Get variables 3 2 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Insert / update (total_registered.busyness) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Get variables 3 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>1568</xloc>
|
||||
<yloc>624</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.busyness) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>registered</field>
|
||||
<name>registered</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>recording_date</field>
|
||||
<name>recording_date</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>busyness</table>
|
||||
<value>
|
||||
<name>study</name>
|
||||
<rename>study</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work</name>
|
||||
<rename>work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>study_percent</name>
|
||||
<rename>study_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work_percent</name>
|
||||
<rename>work_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>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work</name>
|
||||
<rename>no_info</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work_percent</name>
|
||||
<rename>no_info_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>busyness</name>
|
||||
<rename>total_people</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>1968</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Select values 3 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>1712</xloc>
|
||||
<yloc>624</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) РФ/мужчины</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
|
||||
),
|
||||
/*
|
||||
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', '12.7', '8.2', '8.3')) max_date_time
|
||||
from recruits_history
|
||||
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_n 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
|
||||
),
|
||||
status_info AS (
|
||||
SELECT
|
||||
r.id AS recruit_id,
|
||||
-- Проверка на обучение в вузе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
|
||||
WHERE vuz->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_vuz,
|
||||
|
||||
-- Проверка на обучение в колледже (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
|
||||
WHERE kolledzh->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
AND kolledzh->'svedObrProg'->>'kodFormaObuch'='1'
|
||||
)
|
||||
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_college,
|
||||
|
||||
-- Проверка на обучение в школе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedSHkola'->'shkola') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedSHkola'->'shkola') AS school
|
||||
WHERE school->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_school,
|
||||
|
||||
-- Проверка на работу (есть информация и работает)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
|
||||
WHERE trud->>'prAktMestRab' = '1'
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_working,
|
||||
|
||||
-- Проверка на самозанятого (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedNPD'->'npd'->'aktNPD' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_samozanyat,
|
||||
|
||||
-- Проверка на ИП (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(ri.info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP') = 'array' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_ip,
|
||||
|
||||
-- Проверка на КФХ (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_kfh,
|
||||
|
||||
|
||||
-- Проверка на отсутствие сведений о вузе
|
||||
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AND jsonb_typeof(info->'svedFL'->'svedVUZ') != 'array' AS no_info_vuz,
|
||||
|
||||
-- Проверка на отсутствие сведений о колледже
|
||||
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AND jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') != 'array' AS no_info_college,
|
||||
|
||||
-- Проверка на отсутствие сведений о школе
|
||||
info->'svedFL'->'svedSHkola'->>'prOtsSvedSHkola' = '1' AND jsonb_typeof(info->'svedFL'->'svedSHkola') != 'array' AS no_info_school,
|
||||
|
||||
-- Проверка на отсутствие сведений о работе
|
||||
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AND jsonb_typeof(info->'svedFL'->'svedTrud') != 'array' AS no_info_work,
|
||||
|
||||
-- Проверка на отсутствие сведений о самозанятых
|
||||
info->'svedFL'->'svedNPD'->'npd'->'aktNPD' is null OR info->'svedFL'->'svedNPD'->'npd'->'aktNPD' = 'null' AS no_info_samozanyat,
|
||||
|
||||
-- Проверка на отсутствие сведений об ip
|
||||
info->'svedFL'->'svedRegIP'->>'prOtsRegIP' = '1' AND jsonb_typeof(info->'svedFL'->'svedRegIP') != 'array' AS no_info_ip,
|
||||
|
||||
-- Проверка на отсутствие сведений о KFH
|
||||
info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' = 'null' OR info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' is null AS no_info_kfh,
|
||||
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'true' AS registered
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
--JOIN public.recruits_history AS rh on rh.recruit_id = r.id
|
||||
WHERE r.current_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 r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id AS recruit_id,
|
||||
-- Проверка на обучение в вузе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
|
||||
WHERE vuz->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_vuz,
|
||||
|
||||
-- Проверка на обучение в колледже (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
|
||||
WHERE kolledzh->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_college,
|
||||
|
||||
-- Проверка на обучение в школе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedSHkola'->'shkola') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedSHkola'->'shkola') AS school
|
||||
WHERE school->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_school,
|
||||
|
||||
-- Проверка на работу (есть информация и работает)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
|
||||
WHERE trud->>'prAktMestRab' = '1'
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_working,
|
||||
|
||||
-- Проверка на самозанятого (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedNPD'->'npd'->'aktNPD' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_samozanyat,
|
||||
|
||||
-- Проверка на ИП (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(ri.info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP') = 'array' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_ip,
|
||||
|
||||
-- Проверка на КФХ (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_kfh,
|
||||
|
||||
|
||||
-- Проверка на отсутствие сведений о вузе
|
||||
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AND jsonb_typeof(info->'svedFL'->'svedVUZ') != 'array' AS no_info_vuz,
|
||||
|
||||
-- Проверка на отсутствие сведений о колледже
|
||||
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AND jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') != 'array' AS no_info_college,
|
||||
|
||||
-- Проверка на отсутствие сведений о школе
|
||||
info->'svedFL'->'svedSHkola'->>'prOtsSvedSHkola' = '1' AND jsonb_typeof(info->'svedFL'->'svedSHkola') != 'array' AS no_info_school,
|
||||
|
||||
-- Проверка на отсутствие сведений о работе
|
||||
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AND jsonb_typeof(info->'svedFL'->'svedTrud') != 'array' AS no_info_work,
|
||||
|
||||
-- Проверка на отсутствие сведений о самозанятых
|
||||
info->'svedFL'->'svedNPD'->'npd'->'aktNPD' is null OR info->'svedFL'->'svedNPD'->'npd'->'aktNPD' = 'null' AS no_info_samozanyat,
|
||||
|
||||
-- Проверка на отсутствие сведений об ip
|
||||
info->'svedFL'->'svedRegIP'->>'prOtsRegIP' = '1' AND jsonb_typeof(info->'svedFL'->'svedRegIP') != 'array' AS no_info_ip,
|
||||
|
||||
-- Проверка на отсутствие сведений о KFH
|
||||
info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' = 'null' OR info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' is null AS no_info_kfh,
|
||||
|
||||
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 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'false' AS registered
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
JOIN public.recruits_history AS 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 r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.current_recruitment_id is null
|
||||
),
|
||||
summary AS (
|
||||
SELECT
|
||||
si.recruitment_id,
|
||||
CASE WHEN si.gender = 'MALE' THEN 'M' ELSE 'W' END AS gender,
|
||||
si.convicts,
|
||||
si.registered,
|
||||
|
||||
-- Количество людей, которые учатся
|
||||
COUNT(CASE WHEN is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school THEN 1 END) AS study,
|
||||
|
||||
-- Количество людей, которые работают (но не учатся)
|
||||
COUNT(CASE WHEN (is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
AND NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school)
|
||||
THEN 1 END) AS work,
|
||||
|
||||
/*-- Количество людей, для которых отсутствуют сведения о вузе, колледже, школе и работе
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR is_working OR is_samozanyat OR is_ip OR is_kfh) THEN 1 END) AS no_info,
|
||||
*/
|
||||
-- Количество людей, для которых нет информации
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR
|
||||
is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
THEN 1 END) AS no_info,
|
||||
|
||||
-- Общее количество людей
|
||||
COUNT(si.recruit_id) AS total_people
|
||||
|
||||
FROM status_info si
|
||||
GROUP BY si.recruitment_id, si.gender, si.convicts, si.registered
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
si.recruitment_id,
|
||||
CASE
|
||||
WHEN si.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
'ALL' AS convicts,
|
||||
si.registered,
|
||||
|
||||
-- Количество людей, которые учатся
|
||||
COUNT(CASE WHEN is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school THEN 1 END) AS study,
|
||||
|
||||
-- Количество людей, которые работают (но не учатся)
|
||||
COUNT(CASE WHEN (is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
AND NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school)
|
||||
THEN 1 END) AS work,
|
||||
|
||||
/*-- Количество людей, для которых отсутствуют сведения о вузе, колледже, школе и работе
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR is_working OR is_samozanyat OR is_ip OR is_kfh) THEN 1 END) AS no_info,
|
||||
*/
|
||||
-- Количество людей, для которых нет информации
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR
|
||||
is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
THEN 1 END) AS no_info,
|
||||
|
||||
-- Общее количество людей
|
||||
COUNT(si.recruit_id) AS total_people
|
||||
FROM status_info si
|
||||
GROUP BY si.recruitment_id, si.gender, si.registered
|
||||
),
|
||||
summary_all AS (
|
||||
SELECT
|
||||
recruitment_id,
|
||||
registered,
|
||||
convicts,
|
||||
'ALL' AS gender,
|
||||
SUM(study) AS study,
|
||||
SUM(work) AS work,
|
||||
SUM(no_info) AS no_info,
|
||||
SUM(total_people) AS total_people
|
||||
FROM summary
|
||||
GROUP BY recruitment_id, registered, convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
recruitment_id,
|
||||
registered,
|
||||
'ALL' AS convicts,
|
||||
'ALL' AS gender,
|
||||
SUM(study) AS study,
|
||||
SUM(work) AS work,
|
||||
SUM(no_info) AS no_info,
|
||||
SUM(total_people) AS total_people
|
||||
FROM summary
|
||||
GROUP BY recruitment_id, registered
|
||||
)
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
s.convicts,
|
||||
s.gender,
|
||||
s.registered,
|
||||
s.recruitment_id,
|
||||
s.study,
|
||||
s.work,
|
||||
s.no_info,
|
||||
s.total_people,
|
||||
|
||||
-- Процент людей, которые учатся
|
||||
ROUND(s.study * 100.0 / NULLIF(s.total_people, 0), 2) AS study_percent,
|
||||
|
||||
-- Процент людей, которые работают
|
||||
ROUND(s.work * 100.0 / NULLIF(s.total_people, 0), 2) AS work_percent,
|
||||
|
||||
-- Процент людей, для которых отсутствуют сведения
|
||||
ROUND(s.no_info * 100.0 / NULLIF(s.total_people, 0), 2) AS no_info_percent
|
||||
FROM summary s
|
||||
UNION ALL
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
sa.convicts,
|
||||
sa.gender,
|
||||
sa.registered,
|
||||
sa.recruitment_id,
|
||||
sa.study,
|
||||
sa.work,
|
||||
sa.no_info,
|
||||
sa.total_people,
|
||||
|
||||
-- Процент людей, которые учатся
|
||||
ROUND(sa.study * 100.0 / NULLIF(sa.total_people, 0), 2) AS study_percent,
|
||||
|
||||
-- Процент людей, которые работают
|
||||
ROUND(sa.work * 100.0 / NULLIF(sa.total_people, 0), 2) AS work_percent,
|
||||
|
||||
-- Процент людей, для которых отсутствуют сведения
|
||||
ROUND(sa.no_info * 100.0 / NULLIF(sa.total_people, 0), 2) AS no_info_percent
|
||||
FROM summary_all sa</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1328</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,691 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.busyness_pr2(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Get variables 3 2 2</from>
|
||||
<to>Select values 3 2 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 2</from>
|
||||
<to>Insert / update (total_registered.busyness) 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Get variables 3 2 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Insert / update (total_registered.busyness) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Get variables 3 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>1568</xloc>
|
||||
<yloc>624</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.busyness) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>registered</field>
|
||||
<name>registered</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>recording_date</field>
|
||||
<name>recording_date</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>busyness</table>
|
||||
<value>
|
||||
<name>study</name>
|
||||
<rename>study</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work</name>
|
||||
<rename>work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>study_percent</name>
|
||||
<rename>study_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work_percent</name>
|
||||
<rename>work_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>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work</name>
|
||||
<rename>no_info</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work_percent</name>
|
||||
<rename>no_info_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>busyness</name>
|
||||
<rename>total_people</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>1968</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Select values 3 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>1712</xloc>
|
||||
<yloc>624</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) РФ/мужчины</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
|
||||
),
|
||||
/*
|
||||
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', '12.7', '8.2', '8.3')) max_date_time
|
||||
from recruits_history
|
||||
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_n 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
|
||||
),
|
||||
status_info AS (
|
||||
SELECT
|
||||
r.id AS recruit_id,
|
||||
-- Проверка на обучение в вузе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
|
||||
WHERE vuz->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_vuz,
|
||||
|
||||
-- Проверка на обучение в колледже (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
|
||||
WHERE kolledzh->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
AND kolledzh->'svedObrProg'->>'kodFormaObuch'='1'
|
||||
)
|
||||
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_college,
|
||||
|
||||
-- Проверка на обучение в школе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedSHkola'->'shkola') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedSHkola'->'shkola') AS school
|
||||
WHERE school->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_school,
|
||||
|
||||
-- Проверка на работу (есть информация и работает)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
|
||||
WHERE trud->>'prAktMestRab' = '1'
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_working,
|
||||
|
||||
-- Проверка на самозанятого (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedNPD'->'npd'->'aktNPD' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_samozanyat,
|
||||
|
||||
-- Проверка на ИП (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(ri.info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP') = 'array' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_ip,
|
||||
|
||||
-- Проверка на КФХ (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_kfh,
|
||||
|
||||
|
||||
-- Проверка на отсутствие сведений о вузе
|
||||
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AND jsonb_typeof(info->'svedFL'->'svedVUZ') != 'array' AS no_info_vuz,
|
||||
|
||||
-- Проверка на отсутствие сведений о колледже
|
||||
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AND jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') != 'array' AS no_info_college,
|
||||
|
||||
-- Проверка на отсутствие сведений о школе
|
||||
info->'svedFL'->'svedSHkola'->>'prOtsSvedSHkola' = '1' AND jsonb_typeof(info->'svedFL'->'svedSHkola') != 'array' AS no_info_school,
|
||||
|
||||
-- Проверка на отсутствие сведений о работе
|
||||
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AND jsonb_typeof(info->'svedFL'->'svedTrud') != 'array' AS no_info_work,
|
||||
|
||||
-- Проверка на отсутствие сведений о самозанятых
|
||||
info->'svedFL'->'svedNPD'->'npd'->'aktNPD' is null OR info->'svedFL'->'svedNPD'->'npd'->'aktNPD' = 'null' AS no_info_samozanyat,
|
||||
|
||||
-- Проверка на отсутствие сведений об ip
|
||||
info->'svedFL'->'svedRegIP'->>'prOtsRegIP' = '1' AND jsonb_typeof(info->'svedFL'->'svedRegIP') != 'array' AS no_info_ip,
|
||||
|
||||
-- Проверка на отсутствие сведений о KFH
|
||||
info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' = 'null' OR info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' is null AS no_info_kfh,
|
||||
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'true' AS registered
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
--JOIN public.recruits_history AS rh on rh.recruit_id = r.id
|
||||
WHERE r.current_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 r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id AS recruit_id,
|
||||
-- Проверка на обучение в вузе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
|
||||
WHERE vuz->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_vuz,
|
||||
|
||||
-- Проверка на обучение в колледже (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
|
||||
WHERE kolledzh->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_college,
|
||||
|
||||
-- Проверка на обучение в школе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedSHkola'->'shkola') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedSHkola'->'shkola') AS school
|
||||
WHERE school->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_school,
|
||||
|
||||
-- Проверка на работу (есть информация и работает)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
|
||||
WHERE trud->>'prAktMestRab' = '1'
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_working,
|
||||
|
||||
-- Проверка на самозанятого (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedNPD'->'npd'->'aktNPD' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_samozanyat,
|
||||
|
||||
-- Проверка на ИП (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(ri.info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP') = 'array' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_ip,
|
||||
|
||||
-- Проверка на КФХ (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_kfh,
|
||||
|
||||
|
||||
-- Проверка на отсутствие сведений о вузе
|
||||
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AND jsonb_typeof(info->'svedFL'->'svedVUZ') != 'array' AS no_info_vuz,
|
||||
|
||||
-- Проверка на отсутствие сведений о колледже
|
||||
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AND jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') != 'array' AS no_info_college,
|
||||
|
||||
-- Проверка на отсутствие сведений о школе
|
||||
info->'svedFL'->'svedSHkola'->>'prOtsSvedSHkola' = '1' AND jsonb_typeof(info->'svedFL'->'svedSHkola') != 'array' AS no_info_school,
|
||||
|
||||
-- Проверка на отсутствие сведений о работе
|
||||
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AND jsonb_typeof(info->'svedFL'->'svedTrud') != 'array' AS no_info_work,
|
||||
|
||||
-- Проверка на отсутствие сведений о самозанятых
|
||||
info->'svedFL'->'svedNPD'->'npd'->'aktNPD' is null OR info->'svedFL'->'svedNPD'->'npd'->'aktNPD' = 'null' AS no_info_samozanyat,
|
||||
|
||||
-- Проверка на отсутствие сведений об ip
|
||||
info->'svedFL'->'svedRegIP'->>'prOtsRegIP' = '1' AND jsonb_typeof(info->'svedFL'->'svedRegIP') != 'array' AS no_info_ip,
|
||||
|
||||
-- Проверка на отсутствие сведений о KFH
|
||||
info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' = 'null' OR info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' is null AS no_info_kfh,
|
||||
|
||||
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 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'false' AS registered
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
JOIN public.recruits_history AS 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 r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.current_recruitment_id is null
|
||||
),
|
||||
summary AS (
|
||||
SELECT
|
||||
si.recruitment_id,
|
||||
CASE WHEN si.gender = 'MALE' THEN 'M' ELSE 'W' END AS gender,
|
||||
si.convicts,
|
||||
si.registered,
|
||||
|
||||
-- Количество людей, которые учатся
|
||||
COUNT(CASE WHEN is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school THEN 1 END) AS study,
|
||||
|
||||
-- Количество людей, которые работают (но не учатся)
|
||||
COUNT(CASE WHEN (is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
AND NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school)
|
||||
THEN 1 END) AS work,
|
||||
|
||||
/*-- Количество людей, для которых отсутствуют сведения о вузе, колледже, школе и работе
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR is_working OR is_samozanyat OR is_ip OR is_kfh) THEN 1 END) AS no_info,
|
||||
*/
|
||||
-- Количество людей, для которых нет информации
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR
|
||||
is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
THEN 1 END) AS no_info,
|
||||
|
||||
-- Общее количество людей
|
||||
COUNT(si.recruit_id) AS total_people
|
||||
|
||||
FROM status_info si
|
||||
GROUP BY si.recruitment_id, si.gender, si.convicts, si.registered
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
si.recruitment_id,
|
||||
CASE
|
||||
WHEN si.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
'ALL' AS convicts,
|
||||
si.registered,
|
||||
|
||||
-- Количество людей, которые учатся
|
||||
COUNT(CASE WHEN is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school THEN 1 END) AS study,
|
||||
|
||||
-- Количество людей, которые работают (но не учатся)
|
||||
COUNT(CASE WHEN (is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
AND NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school)
|
||||
THEN 1 END) AS work,
|
||||
|
||||
/*-- Количество людей, для которых отсутствуют сведения о вузе, колледже, школе и работе
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR is_working OR is_samozanyat OR is_ip OR is_kfh) THEN 1 END) AS no_info,
|
||||
*/
|
||||
-- Количество людей, для которых нет информации
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR
|
||||
is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
THEN 1 END) AS no_info,
|
||||
|
||||
-- Общее количество людей
|
||||
COUNT(si.recruit_id) AS total_people
|
||||
FROM status_info si
|
||||
GROUP BY si.recruitment_id, si.gender, si.registered
|
||||
),
|
||||
summary_all AS (
|
||||
SELECT
|
||||
recruitment_id,
|
||||
registered,
|
||||
convicts,
|
||||
'ALL' AS gender,
|
||||
SUM(study) AS study,
|
||||
SUM(work) AS work,
|
||||
SUM(no_info) AS no_info,
|
||||
SUM(total_people) AS total_people
|
||||
FROM summary
|
||||
GROUP BY recruitment_id, registered, convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
recruitment_id,
|
||||
registered,
|
||||
'ALL' AS convicts,
|
||||
'ALL' AS gender,
|
||||
SUM(study) AS study,
|
||||
SUM(work) AS work,
|
||||
SUM(no_info) AS no_info,
|
||||
SUM(total_people) AS total_people
|
||||
FROM summary
|
||||
GROUP BY recruitment_id, registered
|
||||
)
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
s.convicts,
|
||||
s.gender,
|
||||
s.registered,
|
||||
s.recruitment_id,
|
||||
s.study,
|
||||
s.work,
|
||||
s.no_info,
|
||||
s.total_people,
|
||||
|
||||
-- Процент людей, которые учатся
|
||||
ROUND(s.study * 100.0 / NULLIF(s.total_people, 0), 2) AS study_percent,
|
||||
|
||||
-- Процент людей, которые работают
|
||||
ROUND(s.work * 100.0 / NULLIF(s.total_people, 0), 2) AS work_percent,
|
||||
|
||||
-- Процент людей, для которых отсутствуют сведения
|
||||
ROUND(s.no_info * 100.0 / NULLIF(s.total_people, 0), 2) AS no_info_percent
|
||||
FROM summary s
|
||||
UNION ALL
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
sa.convicts,
|
||||
sa.gender,
|
||||
sa.registered,
|
||||
sa.recruitment_id,
|
||||
sa.study,
|
||||
sa.work,
|
||||
sa.no_info,
|
||||
sa.total_people,
|
||||
|
||||
-- Процент людей, которые учатся
|
||||
ROUND(sa.study * 100.0 / NULLIF(sa.total_people, 0), 2) AS study_percent,
|
||||
|
||||
-- Процент людей, которые работают
|
||||
ROUND(sa.work * 100.0 / NULLIF(sa.total_people, 0), 2) AS work_percent,
|
||||
|
||||
-- Процент людей, для которых отсутствуют сведения
|
||||
ROUND(sa.no_info * 100.0 / NULLIF(sa.total_people, 0), 2) AS no_info_percent
|
||||
FROM summary_all sa</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1328</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,691 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.busyness_pr3(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Get variables 3 2 2</from>
|
||||
<to>Select values 3 2 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 2</from>
|
||||
<to>Insert / update (total_registered.busyness) 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Get variables 3 2 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Insert / update (total_registered.busyness) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Get variables 3 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>1568</xloc>
|
||||
<yloc>624</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.busyness) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>registered</field>
|
||||
<name>registered</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>recording_date</field>
|
||||
<name>recording_date</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>busyness</table>
|
||||
<value>
|
||||
<name>study</name>
|
||||
<rename>study</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work</name>
|
||||
<rename>work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>study_percent</name>
|
||||
<rename>study_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work_percent</name>
|
||||
<rename>work_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>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work</name>
|
||||
<rename>no_info</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work_percent</name>
|
||||
<rename>no_info_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>busyness</name>
|
||||
<rename>total_people</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>1968</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Select values 3 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>1712</xloc>
|
||||
<yloc>624</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) РФ/мужчины</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
|
||||
),
|
||||
/*
|
||||
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', '12.7', '8.2', '8.3')) max_date_time
|
||||
from recruits_history
|
||||
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_n 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
|
||||
),
|
||||
status_info AS (
|
||||
SELECT
|
||||
r.id AS recruit_id,
|
||||
-- Проверка на обучение в вузе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
|
||||
WHERE vuz->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_vuz,
|
||||
|
||||
-- Проверка на обучение в колледже (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
|
||||
WHERE kolledzh->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
AND kolledzh->'svedObrProg'->>'kodFormaObuch'='1'
|
||||
)
|
||||
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_college,
|
||||
|
||||
-- Проверка на обучение в школе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedSHkola'->'shkola') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedSHkola'->'shkola') AS school
|
||||
WHERE school->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_school,
|
||||
|
||||
-- Проверка на работу (есть информация и работает)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
|
||||
WHERE trud->>'prAktMestRab' = '1'
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_working,
|
||||
|
||||
-- Проверка на самозанятого (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedNPD'->'npd'->'aktNPD' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_samozanyat,
|
||||
|
||||
-- Проверка на ИП (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(ri.info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP') = 'array' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_ip,
|
||||
|
||||
-- Проверка на КФХ (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_kfh,
|
||||
|
||||
|
||||
-- Проверка на отсутствие сведений о вузе
|
||||
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AND jsonb_typeof(info->'svedFL'->'svedVUZ') != 'array' AS no_info_vuz,
|
||||
|
||||
-- Проверка на отсутствие сведений о колледже
|
||||
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AND jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') != 'array' AS no_info_college,
|
||||
|
||||
-- Проверка на отсутствие сведений о школе
|
||||
info->'svedFL'->'svedSHkola'->>'prOtsSvedSHkola' = '1' AND jsonb_typeof(info->'svedFL'->'svedSHkola') != 'array' AS no_info_school,
|
||||
|
||||
-- Проверка на отсутствие сведений о работе
|
||||
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AND jsonb_typeof(info->'svedFL'->'svedTrud') != 'array' AS no_info_work,
|
||||
|
||||
-- Проверка на отсутствие сведений о самозанятых
|
||||
info->'svedFL'->'svedNPD'->'npd'->'aktNPD' is null OR info->'svedFL'->'svedNPD'->'npd'->'aktNPD' = 'null' AS no_info_samozanyat,
|
||||
|
||||
-- Проверка на отсутствие сведений об ip
|
||||
info->'svedFL'->'svedRegIP'->>'prOtsRegIP' = '1' AND jsonb_typeof(info->'svedFL'->'svedRegIP') != 'array' AS no_info_ip,
|
||||
|
||||
-- Проверка на отсутствие сведений о KFH
|
||||
info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' = 'null' OR info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' is null AS no_info_kfh,
|
||||
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'true' AS registered
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
--JOIN public.recruits_history AS rh on rh.recruit_id = r.id
|
||||
WHERE r.current_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 r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id AS recruit_id,
|
||||
-- Проверка на обучение в вузе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
|
||||
WHERE vuz->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_vuz,
|
||||
|
||||
-- Проверка на обучение в колледже (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
|
||||
WHERE kolledzh->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_college,
|
||||
|
||||
-- Проверка на обучение в школе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedSHkola'->'shkola') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedSHkola'->'shkola') AS school
|
||||
WHERE school->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_school,
|
||||
|
||||
-- Проверка на работу (есть информация и работает)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
|
||||
WHERE trud->>'prAktMestRab' = '1'
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_working,
|
||||
|
||||
-- Проверка на самозанятого (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedNPD'->'npd'->'aktNPD' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_samozanyat,
|
||||
|
||||
-- Проверка на ИП (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(ri.info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP') = 'array' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_ip,
|
||||
|
||||
-- Проверка на КФХ (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_kfh,
|
||||
|
||||
|
||||
-- Проверка на отсутствие сведений о вузе
|
||||
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AND jsonb_typeof(info->'svedFL'->'svedVUZ') != 'array' AS no_info_vuz,
|
||||
|
||||
-- Проверка на отсутствие сведений о колледже
|
||||
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AND jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') != 'array' AS no_info_college,
|
||||
|
||||
-- Проверка на отсутствие сведений о школе
|
||||
info->'svedFL'->'svedSHkola'->>'prOtsSvedSHkola' = '1' AND jsonb_typeof(info->'svedFL'->'svedSHkola') != 'array' AS no_info_school,
|
||||
|
||||
-- Проверка на отсутствие сведений о работе
|
||||
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AND jsonb_typeof(info->'svedFL'->'svedTrud') != 'array' AS no_info_work,
|
||||
|
||||
-- Проверка на отсутствие сведений о самозанятых
|
||||
info->'svedFL'->'svedNPD'->'npd'->'aktNPD' is null OR info->'svedFL'->'svedNPD'->'npd'->'aktNPD' = 'null' AS no_info_samozanyat,
|
||||
|
||||
-- Проверка на отсутствие сведений об ip
|
||||
info->'svedFL'->'svedRegIP'->>'prOtsRegIP' = '1' AND jsonb_typeof(info->'svedFL'->'svedRegIP') != 'array' AS no_info_ip,
|
||||
|
||||
-- Проверка на отсутствие сведений о KFH
|
||||
info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' = 'null' OR info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' is null AS no_info_kfh,
|
||||
|
||||
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 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'false' AS registered
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
JOIN public.recruits_history AS 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 r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.current_recruitment_id is null
|
||||
),
|
||||
summary AS (
|
||||
SELECT
|
||||
si.recruitment_id,
|
||||
CASE WHEN si.gender = 'MALE' THEN 'M' ELSE 'W' END AS gender,
|
||||
si.convicts,
|
||||
si.registered,
|
||||
|
||||
-- Количество людей, которые учатся
|
||||
COUNT(CASE WHEN is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school THEN 1 END) AS study,
|
||||
|
||||
-- Количество людей, которые работают (но не учатся)
|
||||
COUNT(CASE WHEN (is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
AND NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school)
|
||||
THEN 1 END) AS work,
|
||||
|
||||
/*-- Количество людей, для которых отсутствуют сведения о вузе, колледже, школе и работе
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR is_working OR is_samozanyat OR is_ip OR is_kfh) THEN 1 END) AS no_info,
|
||||
*/
|
||||
-- Количество людей, для которых нет информации
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR
|
||||
is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
THEN 1 END) AS no_info,
|
||||
|
||||
-- Общее количество людей
|
||||
COUNT(si.recruit_id) AS total_people
|
||||
|
||||
FROM status_info si
|
||||
GROUP BY si.recruitment_id, si.gender, si.convicts, si.registered
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
si.recruitment_id,
|
||||
CASE
|
||||
WHEN si.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
'ALL' AS convicts,
|
||||
si.registered,
|
||||
|
||||
-- Количество людей, которые учатся
|
||||
COUNT(CASE WHEN is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school THEN 1 END) AS study,
|
||||
|
||||
-- Количество людей, которые работают (но не учатся)
|
||||
COUNT(CASE WHEN (is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
AND NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school)
|
||||
THEN 1 END) AS work,
|
||||
|
||||
/*-- Количество людей, для которых отсутствуют сведения о вузе, колледже, школе и работе
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR is_working OR is_samozanyat OR is_ip OR is_kfh) THEN 1 END) AS no_info,
|
||||
*/
|
||||
-- Количество людей, для которых нет информации
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR
|
||||
is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
THEN 1 END) AS no_info,
|
||||
|
||||
-- Общее количество людей
|
||||
COUNT(si.recruit_id) AS total_people
|
||||
FROM status_info si
|
||||
GROUP BY si.recruitment_id, si.gender, si.registered
|
||||
),
|
||||
summary_all AS (
|
||||
SELECT
|
||||
recruitment_id,
|
||||
registered,
|
||||
convicts,
|
||||
'ALL' AS gender,
|
||||
SUM(study) AS study,
|
||||
SUM(work) AS work,
|
||||
SUM(no_info) AS no_info,
|
||||
SUM(total_people) AS total_people
|
||||
FROM summary
|
||||
GROUP BY recruitment_id, registered, convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
recruitment_id,
|
||||
registered,
|
||||
'ALL' AS convicts,
|
||||
'ALL' AS gender,
|
||||
SUM(study) AS study,
|
||||
SUM(work) AS work,
|
||||
SUM(no_info) AS no_info,
|
||||
SUM(total_people) AS total_people
|
||||
FROM summary
|
||||
GROUP BY recruitment_id, registered
|
||||
)
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
s.convicts,
|
||||
s.gender,
|
||||
s.registered,
|
||||
s.recruitment_id,
|
||||
s.study,
|
||||
s.work,
|
||||
s.no_info,
|
||||
s.total_people,
|
||||
|
||||
-- Процент людей, которые учатся
|
||||
ROUND(s.study * 100.0 / NULLIF(s.total_people, 0), 2) AS study_percent,
|
||||
|
||||
-- Процент людей, которые работают
|
||||
ROUND(s.work * 100.0 / NULLIF(s.total_people, 0), 2) AS work_percent,
|
||||
|
||||
-- Процент людей, для которых отсутствуют сведения
|
||||
ROUND(s.no_info * 100.0 / NULLIF(s.total_people, 0), 2) AS no_info_percent
|
||||
FROM summary s
|
||||
UNION ALL
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
sa.convicts,
|
||||
sa.gender,
|
||||
sa.registered,
|
||||
sa.recruitment_id,
|
||||
sa.study,
|
||||
sa.work,
|
||||
sa.no_info,
|
||||
sa.total_people,
|
||||
|
||||
-- Процент людей, которые учатся
|
||||
ROUND(sa.study * 100.0 / NULLIF(sa.total_people, 0), 2) AS study_percent,
|
||||
|
||||
-- Процент людей, которые работают
|
||||
ROUND(sa.work * 100.0 / NULLIF(sa.total_people, 0), 2) AS work_percent,
|
||||
|
||||
-- Процент людей, для которых отсутствуют сведения
|
||||
ROUND(sa.no_info * 100.0 / NULLIF(sa.total_people, 0), 2) AS no_info_percent
|
||||
FROM summary_all sa</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1328</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,691 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.busyness_pr4(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Get variables 3 2 2</from>
|
||||
<to>Select values 3 2 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 2</from>
|
||||
<to>Insert / update (total_registered.busyness) 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Get variables 3 2 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Insert / update (total_registered.busyness) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Get variables 3 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>1568</xloc>
|
||||
<yloc>624</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.busyness) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>registered</field>
|
||||
<name>registered</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>recording_date</field>
|
||||
<name>recording_date</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>busyness</table>
|
||||
<value>
|
||||
<name>study</name>
|
||||
<rename>study</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work</name>
|
||||
<rename>work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>study_percent</name>
|
||||
<rename>study_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work_percent</name>
|
||||
<rename>work_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>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work</name>
|
||||
<rename>no_info</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work_percent</name>
|
||||
<rename>no_info_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>busyness</name>
|
||||
<rename>total_people</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>1968</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Select values 3 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>1712</xloc>
|
||||
<yloc>624</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) РФ/мужчины</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
|
||||
),
|
||||
/*
|
||||
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', '12.7', '8.2', '8.3')) max_date_time
|
||||
from recruits_history
|
||||
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_n 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
|
||||
),
|
||||
status_info AS (
|
||||
SELECT
|
||||
r.id AS recruit_id,
|
||||
-- Проверка на обучение в вузе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
|
||||
WHERE vuz->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_vuz,
|
||||
|
||||
-- Проверка на обучение в колледже (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
|
||||
WHERE kolledzh->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
AND kolledzh->'svedObrProg'->>'kodFormaObuch'='1'
|
||||
)
|
||||
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_college,
|
||||
|
||||
-- Проверка на обучение в школе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedSHkola'->'shkola') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedSHkola'->'shkola') AS school
|
||||
WHERE school->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_school,
|
||||
|
||||
-- Проверка на работу (есть информация и работает)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
|
||||
WHERE trud->>'prAktMestRab' = '1'
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_working,
|
||||
|
||||
-- Проверка на самозанятого (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedNPD'->'npd'->'aktNPD' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_samozanyat,
|
||||
|
||||
-- Проверка на ИП (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(ri.info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP') = 'array' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_ip,
|
||||
|
||||
-- Проверка на КФХ (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_kfh,
|
||||
|
||||
|
||||
-- Проверка на отсутствие сведений о вузе
|
||||
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AND jsonb_typeof(info->'svedFL'->'svedVUZ') != 'array' AS no_info_vuz,
|
||||
|
||||
-- Проверка на отсутствие сведений о колледже
|
||||
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AND jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') != 'array' AS no_info_college,
|
||||
|
||||
-- Проверка на отсутствие сведений о школе
|
||||
info->'svedFL'->'svedSHkola'->>'prOtsSvedSHkola' = '1' AND jsonb_typeof(info->'svedFL'->'svedSHkola') != 'array' AS no_info_school,
|
||||
|
||||
-- Проверка на отсутствие сведений о работе
|
||||
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AND jsonb_typeof(info->'svedFL'->'svedTrud') != 'array' AS no_info_work,
|
||||
|
||||
-- Проверка на отсутствие сведений о самозанятых
|
||||
info->'svedFL'->'svedNPD'->'npd'->'aktNPD' is null OR info->'svedFL'->'svedNPD'->'npd'->'aktNPD' = 'null' AS no_info_samozanyat,
|
||||
|
||||
-- Проверка на отсутствие сведений об ip
|
||||
info->'svedFL'->'svedRegIP'->>'prOtsRegIP' = '1' AND jsonb_typeof(info->'svedFL'->'svedRegIP') != 'array' AS no_info_ip,
|
||||
|
||||
-- Проверка на отсутствие сведений о KFH
|
||||
info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' = 'null' OR info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' is null AS no_info_kfh,
|
||||
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'true' AS registered
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
--JOIN public.recruits_history AS rh on rh.recruit_id = r.id
|
||||
WHERE r.current_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 r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id AS recruit_id,
|
||||
-- Проверка на обучение в вузе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
|
||||
WHERE vuz->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_vuz,
|
||||
|
||||
-- Проверка на обучение в колледже (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
|
||||
WHERE kolledzh->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_college,
|
||||
|
||||
-- Проверка на обучение в школе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedSHkola'->'shkola') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedSHkola'->'shkola') AS school
|
||||
WHERE school->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_school,
|
||||
|
||||
-- Проверка на работу (есть информация и работает)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
|
||||
WHERE trud->>'prAktMestRab' = '1'
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_working,
|
||||
|
||||
-- Проверка на самозанятого (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedNPD'->'npd'->'aktNPD' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_samozanyat,
|
||||
|
||||
-- Проверка на ИП (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(ri.info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP') = 'array' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_ip,
|
||||
|
||||
-- Проверка на КФХ (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_kfh,
|
||||
|
||||
|
||||
-- Проверка на отсутствие сведений о вузе
|
||||
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AND jsonb_typeof(info->'svedFL'->'svedVUZ') != 'array' AS no_info_vuz,
|
||||
|
||||
-- Проверка на отсутствие сведений о колледже
|
||||
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AND jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') != 'array' AS no_info_college,
|
||||
|
||||
-- Проверка на отсутствие сведений о школе
|
||||
info->'svedFL'->'svedSHkola'->>'prOtsSvedSHkola' = '1' AND jsonb_typeof(info->'svedFL'->'svedSHkola') != 'array' AS no_info_school,
|
||||
|
||||
-- Проверка на отсутствие сведений о работе
|
||||
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AND jsonb_typeof(info->'svedFL'->'svedTrud') != 'array' AS no_info_work,
|
||||
|
||||
-- Проверка на отсутствие сведений о самозанятых
|
||||
info->'svedFL'->'svedNPD'->'npd'->'aktNPD' is null OR info->'svedFL'->'svedNPD'->'npd'->'aktNPD' = 'null' AS no_info_samozanyat,
|
||||
|
||||
-- Проверка на отсутствие сведений об ip
|
||||
info->'svedFL'->'svedRegIP'->>'prOtsRegIP' = '1' AND jsonb_typeof(info->'svedFL'->'svedRegIP') != 'array' AS no_info_ip,
|
||||
|
||||
-- Проверка на отсутствие сведений о KFH
|
||||
info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' = 'null' OR info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' is null AS no_info_kfh,
|
||||
|
||||
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 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'false' AS registered
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
JOIN public.recruits_history AS 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 r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.current_recruitment_id is null
|
||||
),
|
||||
summary AS (
|
||||
SELECT
|
||||
si.recruitment_id,
|
||||
CASE WHEN si.gender = 'MALE' THEN 'M' ELSE 'W' END AS gender,
|
||||
si.convicts,
|
||||
si.registered,
|
||||
|
||||
-- Количество людей, которые учатся
|
||||
COUNT(CASE WHEN is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school THEN 1 END) AS study,
|
||||
|
||||
-- Количество людей, которые работают (но не учатся)
|
||||
COUNT(CASE WHEN (is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
AND NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school)
|
||||
THEN 1 END) AS work,
|
||||
|
||||
/*-- Количество людей, для которых отсутствуют сведения о вузе, колледже, школе и работе
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR is_working OR is_samozanyat OR is_ip OR is_kfh) THEN 1 END) AS no_info,
|
||||
*/
|
||||
-- Количество людей, для которых нет информации
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR
|
||||
is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
THEN 1 END) AS no_info,
|
||||
|
||||
-- Общее количество людей
|
||||
COUNT(si.recruit_id) AS total_people
|
||||
|
||||
FROM status_info si
|
||||
GROUP BY si.recruitment_id, si.gender, si.convicts, si.registered
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
si.recruitment_id,
|
||||
CASE
|
||||
WHEN si.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
'ALL' AS convicts,
|
||||
si.registered,
|
||||
|
||||
-- Количество людей, которые учатся
|
||||
COUNT(CASE WHEN is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school THEN 1 END) AS study,
|
||||
|
||||
-- Количество людей, которые работают (но не учатся)
|
||||
COUNT(CASE WHEN (is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
AND NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school)
|
||||
THEN 1 END) AS work,
|
||||
|
||||
/*-- Количество людей, для которых отсутствуют сведения о вузе, колледже, школе и работе
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR is_working OR is_samozanyat OR is_ip OR is_kfh) THEN 1 END) AS no_info,
|
||||
*/
|
||||
-- Количество людей, для которых нет информации
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR
|
||||
is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
THEN 1 END) AS no_info,
|
||||
|
||||
-- Общее количество людей
|
||||
COUNT(si.recruit_id) AS total_people
|
||||
FROM status_info si
|
||||
GROUP BY si.recruitment_id, si.gender, si.registered
|
||||
),
|
||||
summary_all AS (
|
||||
SELECT
|
||||
recruitment_id,
|
||||
registered,
|
||||
convicts,
|
||||
'ALL' AS gender,
|
||||
SUM(study) AS study,
|
||||
SUM(work) AS work,
|
||||
SUM(no_info) AS no_info,
|
||||
SUM(total_people) AS total_people
|
||||
FROM summary
|
||||
GROUP BY recruitment_id, registered, convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
recruitment_id,
|
||||
registered,
|
||||
'ALL' AS convicts,
|
||||
'ALL' AS gender,
|
||||
SUM(study) AS study,
|
||||
SUM(work) AS work,
|
||||
SUM(no_info) AS no_info,
|
||||
SUM(total_people) AS total_people
|
||||
FROM summary
|
||||
GROUP BY recruitment_id, registered
|
||||
)
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
s.convicts,
|
||||
s.gender,
|
||||
s.registered,
|
||||
s.recruitment_id,
|
||||
s.study,
|
||||
s.work,
|
||||
s.no_info,
|
||||
s.total_people,
|
||||
|
||||
-- Процент людей, которые учатся
|
||||
ROUND(s.study * 100.0 / NULLIF(s.total_people, 0), 2) AS study_percent,
|
||||
|
||||
-- Процент людей, которые работают
|
||||
ROUND(s.work * 100.0 / NULLIF(s.total_people, 0), 2) AS work_percent,
|
||||
|
||||
-- Процент людей, для которых отсутствуют сведения
|
||||
ROUND(s.no_info * 100.0 / NULLIF(s.total_people, 0), 2) AS no_info_percent
|
||||
FROM summary s
|
||||
UNION ALL
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
sa.convicts,
|
||||
sa.gender,
|
||||
sa.registered,
|
||||
sa.recruitment_id,
|
||||
sa.study,
|
||||
sa.work,
|
||||
sa.no_info,
|
||||
sa.total_people,
|
||||
|
||||
-- Процент людей, которые учатся
|
||||
ROUND(sa.study * 100.0 / NULLIF(sa.total_people, 0), 2) AS study_percent,
|
||||
|
||||
-- Процент людей, которые работают
|
||||
ROUND(sa.work * 100.0 / NULLIF(sa.total_people, 0), 2) AS work_percent,
|
||||
|
||||
-- Процент людей, для которых отсутствуют сведения
|
||||
ROUND(sa.no_info * 100.0 / NULLIF(sa.total_people, 0), 2) AS no_info_percent
|
||||
FROM summary_all sa</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1328</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,691 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.busyness_pr5(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Get variables 3 2 2</from>
|
||||
<to>Select values 3 2 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 2</from>
|
||||
<to>Insert / update (total_registered.busyness) 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Get variables 3 2 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Insert / update (total_registered.busyness) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Get variables 3 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>1568</xloc>
|
||||
<yloc>624</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.busyness) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>registered</field>
|
||||
<name>registered</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>recording_date</field>
|
||||
<name>recording_date</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>busyness</table>
|
||||
<value>
|
||||
<name>study</name>
|
||||
<rename>study</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work</name>
|
||||
<rename>work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>study_percent</name>
|
||||
<rename>study_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work_percent</name>
|
||||
<rename>work_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>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work</name>
|
||||
<rename>no_info</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work_percent</name>
|
||||
<rename>no_info_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>busyness</name>
|
||||
<rename>total_people</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>1968</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Select values 3 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>1712</xloc>
|
||||
<yloc>624</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) РФ/мужчины</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
|
||||
),
|
||||
/*
|
||||
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', '12.7', '8.2', '8.3')) max_date_time
|
||||
from recruits_history
|
||||
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_n 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
|
||||
),
|
||||
status_info AS (
|
||||
SELECT
|
||||
r.id AS recruit_id,
|
||||
-- Проверка на обучение в вузе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
|
||||
WHERE vuz->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_vuz,
|
||||
|
||||
-- Проверка на обучение в колледже (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
|
||||
WHERE kolledzh->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
AND kolledzh->'svedObrProg'->>'kodFormaObuch'='1'
|
||||
)
|
||||
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_college,
|
||||
|
||||
-- Проверка на обучение в школе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedSHkola'->'shkola') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedSHkola'->'shkola') AS school
|
||||
WHERE school->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_school,
|
||||
|
||||
-- Проверка на работу (есть информация и работает)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
|
||||
WHERE trud->>'prAktMestRab' = '1'
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_working,
|
||||
|
||||
-- Проверка на самозанятого (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedNPD'->'npd'->'aktNPD' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_samozanyat,
|
||||
|
||||
-- Проверка на ИП (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(ri.info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP') = 'array' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_ip,
|
||||
|
||||
-- Проверка на КФХ (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_kfh,
|
||||
|
||||
|
||||
-- Проверка на отсутствие сведений о вузе
|
||||
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AND jsonb_typeof(info->'svedFL'->'svedVUZ') != 'array' AS no_info_vuz,
|
||||
|
||||
-- Проверка на отсутствие сведений о колледже
|
||||
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AND jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') != 'array' AS no_info_college,
|
||||
|
||||
-- Проверка на отсутствие сведений о школе
|
||||
info->'svedFL'->'svedSHkola'->>'prOtsSvedSHkola' = '1' AND jsonb_typeof(info->'svedFL'->'svedSHkola') != 'array' AS no_info_school,
|
||||
|
||||
-- Проверка на отсутствие сведений о работе
|
||||
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AND jsonb_typeof(info->'svedFL'->'svedTrud') != 'array' AS no_info_work,
|
||||
|
||||
-- Проверка на отсутствие сведений о самозанятых
|
||||
info->'svedFL'->'svedNPD'->'npd'->'aktNPD' is null OR info->'svedFL'->'svedNPD'->'npd'->'aktNPD' = 'null' AS no_info_samozanyat,
|
||||
|
||||
-- Проверка на отсутствие сведений об ip
|
||||
info->'svedFL'->'svedRegIP'->>'prOtsRegIP' = '1' AND jsonb_typeof(info->'svedFL'->'svedRegIP') != 'array' AS no_info_ip,
|
||||
|
||||
-- Проверка на отсутствие сведений о KFH
|
||||
info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' = 'null' OR info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' is null AS no_info_kfh,
|
||||
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'true' AS registered
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
--JOIN public.recruits_history AS rh on rh.recruit_id = r.id
|
||||
WHERE r.current_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 r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id AS recruit_id,
|
||||
-- Проверка на обучение в вузе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
|
||||
WHERE vuz->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_vuz,
|
||||
|
||||
-- Проверка на обучение в колледже (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
|
||||
WHERE kolledzh->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_college,
|
||||
|
||||
-- Проверка на обучение в школе (есть информация и обучается)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedSHkola'->'shkola') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedSHkola'->'shkola') AS school
|
||||
WHERE school->>'kodStatus' IN (
|
||||
'1', -- Обучается
|
||||
'2', -- Восстановлен
|
||||
'4' -- Отпуск
|
||||
)
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_studying_in_school,
|
||||
|
||||
-- Проверка на работу (есть информация и работает)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
|
||||
WHERE trud->>'prAktMestRab' = '1'
|
||||
)
|
||||
ELSE false
|
||||
END
|
||||
) AS is_working,
|
||||
|
||||
-- Проверка на самозанятого (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedNPD'->'npd'->'aktNPD' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_samozanyat,
|
||||
|
||||
-- Проверка на ИП (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN jsonb_typeof(ri.info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP') = 'array' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_ip,
|
||||
|
||||
-- Проверка на КФХ (есть информация)
|
||||
(
|
||||
CASE
|
||||
WHEN ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' != 'null' THEN true
|
||||
ELSE false
|
||||
END
|
||||
) AS is_kfh,
|
||||
|
||||
|
||||
-- Проверка на отсутствие сведений о вузе
|
||||
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AND jsonb_typeof(info->'svedFL'->'svedVUZ') != 'array' AS no_info_vuz,
|
||||
|
||||
-- Проверка на отсутствие сведений о колледже
|
||||
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AND jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') != 'array' AS no_info_college,
|
||||
|
||||
-- Проверка на отсутствие сведений о школе
|
||||
info->'svedFL'->'svedSHkola'->>'prOtsSvedSHkola' = '1' AND jsonb_typeof(info->'svedFL'->'svedSHkola') != 'array' AS no_info_school,
|
||||
|
||||
-- Проверка на отсутствие сведений о работе
|
||||
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AND jsonb_typeof(info->'svedFL'->'svedTrud') != 'array' AS no_info_work,
|
||||
|
||||
-- Проверка на отсутствие сведений о самозанятых
|
||||
info->'svedFL'->'svedNPD'->'npd'->'aktNPD' is null OR info->'svedFL'->'svedNPD'->'npd'->'aktNPD' = 'null' AS no_info_samozanyat,
|
||||
|
||||
-- Проверка на отсутствие сведений об ip
|
||||
info->'svedFL'->'svedRegIP'->>'prOtsRegIP' = '1' AND jsonb_typeof(info->'svedFL'->'svedRegIP') != 'array' AS no_info_ip,
|
||||
|
||||
-- Проверка на отсутствие сведений о KFH
|
||||
info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' = 'null' OR info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat'->'svedGlKFH' is null AS no_info_kfh,
|
||||
|
||||
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 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
'false' AS registered
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
JOIN public.recruits_history AS 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 r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.current_recruitment_id is null
|
||||
),
|
||||
summary AS (
|
||||
SELECT
|
||||
si.recruitment_id,
|
||||
CASE WHEN si.gender = 'MALE' THEN 'M' ELSE 'W' END AS gender,
|
||||
si.convicts,
|
||||
si.registered,
|
||||
|
||||
-- Количество людей, которые учатся
|
||||
COUNT(CASE WHEN is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school THEN 1 END) AS study,
|
||||
|
||||
-- Количество людей, которые работают (но не учатся)
|
||||
COUNT(CASE WHEN (is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
AND NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school)
|
||||
THEN 1 END) AS work,
|
||||
|
||||
/*-- Количество людей, для которых отсутствуют сведения о вузе, колледже, школе и работе
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR is_working OR is_samozanyat OR is_ip OR is_kfh) THEN 1 END) AS no_info,
|
||||
*/
|
||||
-- Количество людей, для которых нет информации
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR
|
||||
is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
THEN 1 END) AS no_info,
|
||||
|
||||
-- Общее количество людей
|
||||
COUNT(si.recruit_id) AS total_people
|
||||
|
||||
FROM status_info si
|
||||
GROUP BY si.recruitment_id, si.gender, si.convicts, si.registered
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
si.recruitment_id,
|
||||
CASE
|
||||
WHEN si.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
'ALL' AS convicts,
|
||||
si.registered,
|
||||
|
||||
-- Количество людей, которые учатся
|
||||
COUNT(CASE WHEN is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school THEN 1 END) AS study,
|
||||
|
||||
-- Количество людей, которые работают (но не учатся)
|
||||
COUNT(CASE WHEN (is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
AND NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school)
|
||||
THEN 1 END) AS work,
|
||||
|
||||
/*-- Количество людей, для которых отсутствуют сведения о вузе, колледже, школе и работе
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR is_working OR is_samozanyat OR is_ip OR is_kfh) THEN 1 END) AS no_info,
|
||||
*/
|
||||
-- Количество людей, для которых нет информации
|
||||
COUNT(CASE WHEN NOT (is_studying_in_vuz OR is_studying_in_college OR is_studying_in_school OR
|
||||
is_working OR is_samozanyat OR is_ip OR is_kfh)
|
||||
THEN 1 END) AS no_info,
|
||||
|
||||
-- Общее количество людей
|
||||
COUNT(si.recruit_id) AS total_people
|
||||
FROM status_info si
|
||||
GROUP BY si.recruitment_id, si.gender, si.registered
|
||||
),
|
||||
summary_all AS (
|
||||
SELECT
|
||||
recruitment_id,
|
||||
registered,
|
||||
convicts,
|
||||
'ALL' AS gender,
|
||||
SUM(study) AS study,
|
||||
SUM(work) AS work,
|
||||
SUM(no_info) AS no_info,
|
||||
SUM(total_people) AS total_people
|
||||
FROM summary
|
||||
GROUP BY recruitment_id, registered, convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
recruitment_id,
|
||||
registered,
|
||||
'ALL' AS convicts,
|
||||
'ALL' AS gender,
|
||||
SUM(study) AS study,
|
||||
SUM(work) AS work,
|
||||
SUM(no_info) AS no_info,
|
||||
SUM(total_people) AS total_people
|
||||
FROM summary
|
||||
GROUP BY recruitment_id, registered
|
||||
)
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
s.convicts,
|
||||
s.gender,
|
||||
s.registered,
|
||||
s.recruitment_id,
|
||||
s.study,
|
||||
s.work,
|
||||
s.no_info,
|
||||
s.total_people,
|
||||
|
||||
-- Процент людей, которые учатся
|
||||
ROUND(s.study * 100.0 / NULLIF(s.total_people, 0), 2) AS study_percent,
|
||||
|
||||
-- Процент людей, которые работают
|
||||
ROUND(s.work * 100.0 / NULLIF(s.total_people, 0), 2) AS work_percent,
|
||||
|
||||
-- Процент людей, для которых отсутствуют сведения
|
||||
ROUND(s.no_info * 100.0 / NULLIF(s.total_people, 0), 2) AS no_info_percent
|
||||
FROM summary s
|
||||
UNION ALL
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
sa.convicts,
|
||||
sa.gender,
|
||||
sa.registered,
|
||||
sa.recruitment_id,
|
||||
sa.study,
|
||||
sa.work,
|
||||
sa.no_info,
|
||||
sa.total_people,
|
||||
|
||||
-- Процент людей, которые учатся
|
||||
ROUND(sa.study * 100.0 / NULLIF(sa.total_people, 0), 2) AS study_percent,
|
||||
|
||||
-- Процент людей, которые работают
|
||||
ROUND(sa.work * 100.0 / NULLIF(sa.total_people, 0), 2) AS work_percent,
|
||||
|
||||
-- Процент людей, для которых отсутствуют сведения
|
||||
ROUND(sa.no_info * 100.0 / NULLIF(sa.total_people, 0), 2) AS no_info_percent
|
||||
FROM summary_all sa</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1328</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -21,60 +21,12 @@
|
|||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Get variables 4 2</from>
|
||||
<to>Select values 4 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry)регион/все</from>
|
||||
<to>Get variables 4 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 4 2</from>
|
||||
<to>Insert / update (total_registered.child_minor) 3</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry)регион/все</from>
|
||||
<to>Insert / update (total_registered.child_minor) 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Get variables 4 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>1056</xloc>
|
||||
<yloc>480</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.child_minor) 3</name>
|
||||
<type>InsertUpdate</type>
|
||||
|
|
@ -189,60 +141,6 @@
|
|||
<yloc>368</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Select values 4 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>1248</xloc>
|
||||
<yloc>480</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry)регион/все</name>
|
||||
<type>TableInput</type>
|
||||
|
|
@ -259,7 +157,7 @@
|
|||
<limit>0</limit>
|
||||
<sql>WITH
|
||||
ids AS (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_1}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
/*
|
||||
last_status as (select recruit_id,
|
||||
|
|
|
|||
|
|
@ -21,60 +21,12 @@
|
|||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Get variables 4 2</from>
|
||||
<to>Select values 4 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry)регион/все</from>
|
||||
<to>Get variables 4 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 4 2</from>
|
||||
<to>Insert / update (total_registered.child_minor) 3</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry)регион/все</from>
|
||||
<to>Insert / update (total_registered.child_minor) 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Get variables 4 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>1056</xloc>
|
||||
<yloc>480</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.child_minor) 3</name>
|
||||
<type>InsertUpdate</type>
|
||||
|
|
@ -189,60 +141,6 @@
|
|||
<yloc>368</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Select values 4 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>1248</xloc>
|
||||
<yloc>480</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry)регион/все</name>
|
||||
<type>TableInput</type>
|
||||
|
|
@ -259,7 +157,7 @@
|
|||
<limit>0</limit>
|
||||
<sql>WITH
|
||||
ids AS (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_2}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
/*
|
||||
last_status as (select recruit_id,
|
||||
|
|
|
|||
|
|
@ -21,60 +21,12 @@
|
|||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Get variables 4 2</from>
|
||||
<to>Select values 4 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry)регион/все</from>
|
||||
<to>Get variables 4 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 4 2</from>
|
||||
<to>Insert / update (total_registered.child_minor) 3</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry)регион/все</from>
|
||||
<to>Insert / update (total_registered.child_minor) 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Get variables 4 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>1056</xloc>
|
||||
<yloc>480</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.child_minor) 3</name>
|
||||
<type>InsertUpdate</type>
|
||||
|
|
@ -189,60 +141,6 @@
|
|||
<yloc>368</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Select values 4 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>1248</xloc>
|
||||
<yloc>480</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry)регион/все</name>
|
||||
<type>TableInput</type>
|
||||
|
|
@ -259,7 +157,7 @@
|
|||
<limit>0</limit>
|
||||
<sql>WITH
|
||||
ids AS (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_3}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
/*
|
||||
last_status as (select recruit_id,
|
||||
|
|
|
|||
|
|
@ -21,60 +21,12 @@
|
|||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Get variables 4 2</from>
|
||||
<to>Select values 4 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry)регион/все</from>
|
||||
<to>Get variables 4 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 4 2</from>
|
||||
<to>Insert / update (total_registered.child_minor) 3</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry)регион/все</from>
|
||||
<to>Insert / update (total_registered.child_minor) 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Get variables 4 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>1056</xloc>
|
||||
<yloc>480</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.child_minor) 3</name>
|
||||
<type>InsertUpdate</type>
|
||||
|
|
@ -189,60 +141,6 @@
|
|||
<yloc>368</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Select values 4 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>1248</xloc>
|
||||
<yloc>480</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry)регион/все</name>
|
||||
<type>TableInput</type>
|
||||
|
|
@ -259,7 +157,7 @@
|
|||
<limit>0</limit>
|
||||
<sql>WITH
|
||||
ids AS (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_4}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
/*
|
||||
last_status as (select recruit_id,
|
||||
|
|
|
|||
|
|
@ -21,60 +21,12 @@
|
|||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Get variables 4 2</from>
|
||||
<to>Select values 4 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry)регион/все</from>
|
||||
<to>Get variables 4 2</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 4 2</from>
|
||||
<to>Insert / update (total_registered.child_minor) 3</to>
|
||||
<enabled>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry)регион/все</from>
|
||||
<to>Insert / update (total_registered.child_minor) 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Get variables 4 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>1056</xloc>
|
||||
<yloc>480</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.child_minor) 3</name>
|
||||
<type>InsertUpdate</type>
|
||||
|
|
@ -189,60 +141,6 @@
|
|||
<yloc>368</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Select values 4 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>1248</xloc>
|
||||
<yloc>480</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry)регион/все</name>
|
||||
<type>TableInput</type>
|
||||
|
|
@ -259,7 +157,7 @@
|
|||
<limit>0</limit>
|
||||
<sql>WITH
|
||||
ids AS (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_5}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
/*
|
||||
last_status as (select recruit_id,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,309 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<workflow>
|
||||
<name>total_registered.education_level(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<workflow_version/>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2025/04/01 10:26:22.205</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2025/04/01 10:26:22.205</modified_date>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<actions>
|
||||
<action>
|
||||
<name>Start</name>
|
||||
<description/>
|
||||
<type>SPECIAL</type>
|
||||
<attributes/>
|
||||
<DayOfMonth>1</DayOfMonth>
|
||||
<hour>12</hour>
|
||||
<intervalMinutes>60</intervalMinutes>
|
||||
<intervalSeconds>0</intervalSeconds>
|
||||
<minutes>0</minutes>
|
||||
<repeat>N</repeat>
|
||||
<schedulerType>0</schedulerType>
|
||||
<weekDay>1</weekDay>
|
||||
<parallel>Y</parallel>
|
||||
<xloc>624</xloc>
|
||||
<yloc>432</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.education_level_pr1(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.education_level(m_c)/total_registered.education_level_pr1(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_1</name>
|
||||
<stream_name>PART_RECRUITMENT_1</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>1088</xloc>
|
||||
<yloc>272</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.education_level_pr2(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.education_level(m_c)/total_registered.education_level_pr2(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_2</name>
|
||||
<stream_name>PART_RECRUITMENT_2</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>1088</xloc>
|
||||
<yloc>352</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.education_level_pr3(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.education_level(m_c)/total_registered.education_level_pr3(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_3</name>
|
||||
<stream_name>PART_RECRUITMENT_3</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>1088</xloc>
|
||||
<yloc>432</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.education_level_pr4(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.education_level(m_c)/total_registered.education_level_pr4(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_4</name>
|
||||
<stream_name>PART_RECRUITMENT_4</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>1088</xloc>
|
||||
<yloc>512</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.education_level_pr5(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.education_level(m_c)/total_registered.education_level_pr5(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_5</name>
|
||||
<stream_name>PART_RECRUITMENT_5</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>1088</xloc>
|
||||
<yloc>592</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1360</xloc>
|
||||
<yloc>272</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 2</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1360</xloc>
|
||||
<yloc>352</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 3</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1360</xloc>
|
||||
<yloc>432</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 4</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1360</xloc>
|
||||
<yloc>512</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 5</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1360</xloc>
|
||||
<yloc>592</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
</actions>
|
||||
<hops>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.education_level_pr1(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.education_level_pr1(m_c).hpl</from>
|
||||
<to>Success</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.education_level_pr2(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.education_level_pr2(m_c).hpl</from>
|
||||
<to>Success 2</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.education_level_pr3(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.education_level_pr3(m_c).hpl</from>
|
||||
<to>Success 3</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.education_level_pr4(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.education_level_pr4(m_c).hpl</from>
|
||||
<to>Success 4</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.education_level_pr5(m_c).hpl</from>
|
||||
<to>Success 5</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.education_level_pr5(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
</hops>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<attributes/>
|
||||
</workflow>
|
||||
|
|
@ -0,0 +1,350 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.education_level_pr1(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Insert / update (total_registered.education_level) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.education_level) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>education_level</table>
|
||||
<value>
|
||||
<name>higher</name>
|
||||
<rename>higher</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>average</name>
|
||||
<rename>average_prof</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>only_general</name>
|
||||
<rename>only_general</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>no_data</name>
|
||||
<rename>count_nodata</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>higher_percent</name>
|
||||
<rename>higher_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>average_percent</name>
|
||||
<rename>average_prof_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>only_general_percent</name>
|
||||
<rename>only_general_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>no_data_percent</name>
|
||||
<rename>count_nodata_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>education_level</name>
|
||||
<rename>total</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>1728</xloc>
|
||||
<yloc>496</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) РФ/мужчины</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 (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_1}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
last_status 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 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
|
||||
),
|
||||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
)
|
||||
) AS has_higher,
|
||||
|
||||
-- Среднее профессиональное образование (если нет высшего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('6', '8', '10', '11')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('6', '8', '10', '11')
|
||||
)
|
||||
) AS has_average_prof,
|
||||
|
||||
-- Общее образование (если нет высшего и среднего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
NOT (
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
)
|
||||
)
|
||||
) AND (
|
||||
ri.info->'svedFL'->'svedRObr'->>'prOtsRObr' = '1'
|
||||
OR ri.info->'svedFL'->'svedInObr'->>'prOtsInObr' = '1'
|
||||
)
|
||||
) AS has_no_data
|
||||
|
||||
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.gender IN ('MALE', 'FEMALE')
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
AND rh.id in (SELECT recruit_history_id FROM registered)
|
||||
-- AND r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
es.gender,
|
||||
es.recruitment_id,
|
||||
es.convicts,
|
||||
COUNT(DISTINCT es.id) AS total,
|
||||
COUNT(DISTINCT CASE WHEN es.has_higher THEN es.id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND es.has_average_prof THEN es.id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND NOT es.has_average_prof AND es.has_only_general THEN es.id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN es.has_no_data THEN es.id END) AS count_nodata
|
||||
FROM education_status es
|
||||
GROUP BY es.recruitment_id, es.gender, es.convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
es.gender,
|
||||
es.recruitment_id,
|
||||
'ALL' AS convicts,
|
||||
COUNT(DISTINCT es.id) AS total,
|
||||
COUNT(DISTINCT CASE WHEN es.has_higher THEN es.id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND es.has_average_prof THEN es.id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND NOT es.has_average_prof AND es.has_only_general THEN es.id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN es.has_no_data THEN es.id END) AS count_nodata
|
||||
FROM education_status es
|
||||
GROUP BY es.recruitment_id, es.gender
|
||||
),
|
||||
final_counts_all AS (
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
recruitment_id,
|
||||
convicts,
|
||||
SUM(total) AS total,
|
||||
SUM(higher) AS higher,
|
||||
SUM(average_prof) AS average_prof,
|
||||
SUM(only_general) AS only_general,
|
||||
SUM(count_nodata) AS count_nodata
|
||||
FROM final_counts
|
||||
GROUP BY recruitment_id, convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
recruitment_id,
|
||||
'ALL' AS convicts,
|
||||
SUM(total) AS total,
|
||||
SUM(higher) AS higher,
|
||||
SUM(average_prof) AS average_prof,
|
||||
SUM(only_general) AS only_general,
|
||||
SUM(count_nodata) AS count_nodata
|
||||
FROM final_counts
|
||||
GROUP BY recruitment_id
|
||||
)
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
CASE
|
||||
WHEN fc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
fc.convicts,
|
||||
fc.recruitment_id,
|
||||
fc.higher,
|
||||
fc.average_prof,
|
||||
fc.only_general,
|
||||
fc.count_nodata,
|
||||
fc.total,
|
||||
COALESCE(ROUND(fc.higher * 100.0 / NULLIF(fc.total, 0), 2), 0) AS higher_percentage,
|
||||
COALESCE(ROUND(fc.average_prof * 100.0 / NULLIF(fc.total, 0), 2), 0) AS average_prof_percentage,
|
||||
COALESCE(ROUND(fc.only_general * 100.0 / NULLIF(fc.total, 0), 2), 0) AS only_general_percentage,
|
||||
COALESCE(ROUND(fc.count_nodata * 100.0 / NULLIF(fc.total, 0), 2), 0) AS count_nodata_percentage
|
||||
FROM final_counts fc
|
||||
UNION ALL
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
fca.gender,
|
||||
fca.convicts,
|
||||
fca.recruitment_id,
|
||||
fca.higher,
|
||||
fca.average_prof,
|
||||
fca.only_general,
|
||||
fca.count_nodata,
|
||||
fca.total,
|
||||
COALESCE(ROUND(fca.higher * 100.0 / NULLIF(fca.total, 0), 2), 0) AS higher_percentage,
|
||||
COALESCE(ROUND(fca.average_prof * 100.0 / NULLIF(fca.total, 0), 2), 0) AS average_prof_percentage,
|
||||
COALESCE(ROUND(fca.only_general * 100.0 / NULLIF(fca.total, 0), 2), 0) AS only_general_percentage,
|
||||
COALESCE(ROUND(fca.count_nodata * 100.0 / NULLIF(fca.total, 0), 2), 0) AS count_nodata_percentage
|
||||
FROM final_counts_all fca</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1072</xloc>
|
||||
<yloc>496</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,350 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.education_level_pr2(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Insert / update (total_registered.education_level) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.education_level) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>education_level</table>
|
||||
<value>
|
||||
<name>higher</name>
|
||||
<rename>higher</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>average</name>
|
||||
<rename>average_prof</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>only_general</name>
|
||||
<rename>only_general</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>no_data</name>
|
||||
<rename>count_nodata</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>higher_percent</name>
|
||||
<rename>higher_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>average_percent</name>
|
||||
<rename>average_prof_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>only_general_percent</name>
|
||||
<rename>only_general_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>no_data_percent</name>
|
||||
<rename>count_nodata_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>education_level</name>
|
||||
<rename>total</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>1728</xloc>
|
||||
<yloc>496</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) РФ/мужчины</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 (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_2}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
last_status 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 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
|
||||
),
|
||||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
)
|
||||
) AS has_higher,
|
||||
|
||||
-- Среднее профессиональное образование (если нет высшего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('6', '8', '10', '11')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('6', '8', '10', '11')
|
||||
)
|
||||
) AS has_average_prof,
|
||||
|
||||
-- Общее образование (если нет высшего и среднего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
NOT (
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
)
|
||||
)
|
||||
) AND (
|
||||
ri.info->'svedFL'->'svedRObr'->>'prOtsRObr' = '1'
|
||||
OR ri.info->'svedFL'->'svedInObr'->>'prOtsInObr' = '1'
|
||||
)
|
||||
) AS has_no_data
|
||||
|
||||
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.gender IN ('MALE', 'FEMALE')
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
AND rh.id in (SELECT recruit_history_id FROM registered)
|
||||
-- AND r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
es.gender,
|
||||
es.recruitment_id,
|
||||
es.convicts,
|
||||
COUNT(DISTINCT es.id) AS total,
|
||||
COUNT(DISTINCT CASE WHEN es.has_higher THEN es.id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND es.has_average_prof THEN es.id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND NOT es.has_average_prof AND es.has_only_general THEN es.id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN es.has_no_data THEN es.id END) AS count_nodata
|
||||
FROM education_status es
|
||||
GROUP BY es.recruitment_id, es.gender, es.convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
es.gender,
|
||||
es.recruitment_id,
|
||||
'ALL' AS convicts,
|
||||
COUNT(DISTINCT es.id) AS total,
|
||||
COUNT(DISTINCT CASE WHEN es.has_higher THEN es.id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND es.has_average_prof THEN es.id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND NOT es.has_average_prof AND es.has_only_general THEN es.id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN es.has_no_data THEN es.id END) AS count_nodata
|
||||
FROM education_status es
|
||||
GROUP BY es.recruitment_id, es.gender
|
||||
),
|
||||
final_counts_all AS (
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
recruitment_id,
|
||||
convicts,
|
||||
SUM(total) AS total,
|
||||
SUM(higher) AS higher,
|
||||
SUM(average_prof) AS average_prof,
|
||||
SUM(only_general) AS only_general,
|
||||
SUM(count_nodata) AS count_nodata
|
||||
FROM final_counts
|
||||
GROUP BY recruitment_id, convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
recruitment_id,
|
||||
'ALL' AS convicts,
|
||||
SUM(total) AS total,
|
||||
SUM(higher) AS higher,
|
||||
SUM(average_prof) AS average_prof,
|
||||
SUM(only_general) AS only_general,
|
||||
SUM(count_nodata) AS count_nodata
|
||||
FROM final_counts
|
||||
GROUP BY recruitment_id
|
||||
)
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
CASE
|
||||
WHEN fc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
fc.convicts,
|
||||
fc.recruitment_id,
|
||||
fc.higher,
|
||||
fc.average_prof,
|
||||
fc.only_general,
|
||||
fc.count_nodata,
|
||||
fc.total,
|
||||
COALESCE(ROUND(fc.higher * 100.0 / NULLIF(fc.total, 0), 2), 0) AS higher_percentage,
|
||||
COALESCE(ROUND(fc.average_prof * 100.0 / NULLIF(fc.total, 0), 2), 0) AS average_prof_percentage,
|
||||
COALESCE(ROUND(fc.only_general * 100.0 / NULLIF(fc.total, 0), 2), 0) AS only_general_percentage,
|
||||
COALESCE(ROUND(fc.count_nodata * 100.0 / NULLIF(fc.total, 0), 2), 0) AS count_nodata_percentage
|
||||
FROM final_counts fc
|
||||
UNION ALL
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
fca.gender,
|
||||
fca.convicts,
|
||||
fca.recruitment_id,
|
||||
fca.higher,
|
||||
fca.average_prof,
|
||||
fca.only_general,
|
||||
fca.count_nodata,
|
||||
fca.total,
|
||||
COALESCE(ROUND(fca.higher * 100.0 / NULLIF(fca.total, 0), 2), 0) AS higher_percentage,
|
||||
COALESCE(ROUND(fca.average_prof * 100.0 / NULLIF(fca.total, 0), 2), 0) AS average_prof_percentage,
|
||||
COALESCE(ROUND(fca.only_general * 100.0 / NULLIF(fca.total, 0), 2), 0) AS only_general_percentage,
|
||||
COALESCE(ROUND(fca.count_nodata * 100.0 / NULLIF(fca.total, 0), 2), 0) AS count_nodata_percentage
|
||||
FROM final_counts_all fca</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1072</xloc>
|
||||
<yloc>496</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,350 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.education_level_pr3(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Insert / update (total_registered.education_level) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.education_level) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>education_level</table>
|
||||
<value>
|
||||
<name>higher</name>
|
||||
<rename>higher</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>average</name>
|
||||
<rename>average_prof</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>only_general</name>
|
||||
<rename>only_general</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>no_data</name>
|
||||
<rename>count_nodata</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>higher_percent</name>
|
||||
<rename>higher_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>average_percent</name>
|
||||
<rename>average_prof_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>only_general_percent</name>
|
||||
<rename>only_general_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>no_data_percent</name>
|
||||
<rename>count_nodata_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>education_level</name>
|
||||
<rename>total</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>1728</xloc>
|
||||
<yloc>496</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) РФ/мужчины</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 (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_3}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
last_status 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 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
|
||||
),
|
||||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
)
|
||||
) AS has_higher,
|
||||
|
||||
-- Среднее профессиональное образование (если нет высшего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('6', '8', '10', '11')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('6', '8', '10', '11')
|
||||
)
|
||||
) AS has_average_prof,
|
||||
|
||||
-- Общее образование (если нет высшего и среднего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
NOT (
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
)
|
||||
)
|
||||
) AND (
|
||||
ri.info->'svedFL'->'svedRObr'->>'prOtsRObr' = '1'
|
||||
OR ri.info->'svedFL'->'svedInObr'->>'prOtsInObr' = '1'
|
||||
)
|
||||
) AS has_no_data
|
||||
|
||||
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.gender IN ('MALE', 'FEMALE')
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
AND rh.id in (SELECT recruit_history_id FROM registered)
|
||||
-- AND r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
es.gender,
|
||||
es.recruitment_id,
|
||||
es.convicts,
|
||||
COUNT(DISTINCT es.id) AS total,
|
||||
COUNT(DISTINCT CASE WHEN es.has_higher THEN es.id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND es.has_average_prof THEN es.id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND NOT es.has_average_prof AND es.has_only_general THEN es.id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN es.has_no_data THEN es.id END) AS count_nodata
|
||||
FROM education_status es
|
||||
GROUP BY es.recruitment_id, es.gender, es.convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
es.gender,
|
||||
es.recruitment_id,
|
||||
'ALL' AS convicts,
|
||||
COUNT(DISTINCT es.id) AS total,
|
||||
COUNT(DISTINCT CASE WHEN es.has_higher THEN es.id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND es.has_average_prof THEN es.id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND NOT es.has_average_prof AND es.has_only_general THEN es.id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN es.has_no_data THEN es.id END) AS count_nodata
|
||||
FROM education_status es
|
||||
GROUP BY es.recruitment_id, es.gender
|
||||
),
|
||||
final_counts_all AS (
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
recruitment_id,
|
||||
convicts,
|
||||
SUM(total) AS total,
|
||||
SUM(higher) AS higher,
|
||||
SUM(average_prof) AS average_prof,
|
||||
SUM(only_general) AS only_general,
|
||||
SUM(count_nodata) AS count_nodata
|
||||
FROM final_counts
|
||||
GROUP BY recruitment_id, convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
recruitment_id,
|
||||
'ALL' AS convicts,
|
||||
SUM(total) AS total,
|
||||
SUM(higher) AS higher,
|
||||
SUM(average_prof) AS average_prof,
|
||||
SUM(only_general) AS only_general,
|
||||
SUM(count_nodata) AS count_nodata
|
||||
FROM final_counts
|
||||
GROUP BY recruitment_id
|
||||
)
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
CASE
|
||||
WHEN fc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
fc.convicts,
|
||||
fc.recruitment_id,
|
||||
fc.higher,
|
||||
fc.average_prof,
|
||||
fc.only_general,
|
||||
fc.count_nodata,
|
||||
fc.total,
|
||||
COALESCE(ROUND(fc.higher * 100.0 / NULLIF(fc.total, 0), 2), 0) AS higher_percentage,
|
||||
COALESCE(ROUND(fc.average_prof * 100.0 / NULLIF(fc.total, 0), 2), 0) AS average_prof_percentage,
|
||||
COALESCE(ROUND(fc.only_general * 100.0 / NULLIF(fc.total, 0), 2), 0) AS only_general_percentage,
|
||||
COALESCE(ROUND(fc.count_nodata * 100.0 / NULLIF(fc.total, 0), 2), 0) AS count_nodata_percentage
|
||||
FROM final_counts fc
|
||||
UNION ALL
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
fca.gender,
|
||||
fca.convicts,
|
||||
fca.recruitment_id,
|
||||
fca.higher,
|
||||
fca.average_prof,
|
||||
fca.only_general,
|
||||
fca.count_nodata,
|
||||
fca.total,
|
||||
COALESCE(ROUND(fca.higher * 100.0 / NULLIF(fca.total, 0), 2), 0) AS higher_percentage,
|
||||
COALESCE(ROUND(fca.average_prof * 100.0 / NULLIF(fca.total, 0), 2), 0) AS average_prof_percentage,
|
||||
COALESCE(ROUND(fca.only_general * 100.0 / NULLIF(fca.total, 0), 2), 0) AS only_general_percentage,
|
||||
COALESCE(ROUND(fca.count_nodata * 100.0 / NULLIF(fca.total, 0), 2), 0) AS count_nodata_percentage
|
||||
FROM final_counts_all fca</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1072</xloc>
|
||||
<yloc>496</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,350 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.education_level_pr4(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Insert / update (total_registered.education_level) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.education_level) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>education_level</table>
|
||||
<value>
|
||||
<name>higher</name>
|
||||
<rename>higher</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>average</name>
|
||||
<rename>average_prof</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>only_general</name>
|
||||
<rename>only_general</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>no_data</name>
|
||||
<rename>count_nodata</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>higher_percent</name>
|
||||
<rename>higher_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>average_percent</name>
|
||||
<rename>average_prof_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>only_general_percent</name>
|
||||
<rename>only_general_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>no_data_percent</name>
|
||||
<rename>count_nodata_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>education_level</name>
|
||||
<rename>total</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>1728</xloc>
|
||||
<yloc>496</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) РФ/мужчины</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 (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_4}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
last_status 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 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
|
||||
),
|
||||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
)
|
||||
) AS has_higher,
|
||||
|
||||
-- Среднее профессиональное образование (если нет высшего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('6', '8', '10', '11')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('6', '8', '10', '11')
|
||||
)
|
||||
) AS has_average_prof,
|
||||
|
||||
-- Общее образование (если нет высшего и среднего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
NOT (
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
)
|
||||
)
|
||||
) AND (
|
||||
ri.info->'svedFL'->'svedRObr'->>'prOtsRObr' = '1'
|
||||
OR ri.info->'svedFL'->'svedInObr'->>'prOtsInObr' = '1'
|
||||
)
|
||||
) AS has_no_data
|
||||
|
||||
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.gender IN ('MALE', 'FEMALE')
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
AND rh.id in (SELECT recruit_history_id FROM registered)
|
||||
-- AND r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
es.gender,
|
||||
es.recruitment_id,
|
||||
es.convicts,
|
||||
COUNT(DISTINCT es.id) AS total,
|
||||
COUNT(DISTINCT CASE WHEN es.has_higher THEN es.id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND es.has_average_prof THEN es.id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND NOT es.has_average_prof AND es.has_only_general THEN es.id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN es.has_no_data THEN es.id END) AS count_nodata
|
||||
FROM education_status es
|
||||
GROUP BY es.recruitment_id, es.gender, es.convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
es.gender,
|
||||
es.recruitment_id,
|
||||
'ALL' AS convicts,
|
||||
COUNT(DISTINCT es.id) AS total,
|
||||
COUNT(DISTINCT CASE WHEN es.has_higher THEN es.id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND es.has_average_prof THEN es.id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND NOT es.has_average_prof AND es.has_only_general THEN es.id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN es.has_no_data THEN es.id END) AS count_nodata
|
||||
FROM education_status es
|
||||
GROUP BY es.recruitment_id, es.gender
|
||||
),
|
||||
final_counts_all AS (
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
recruitment_id,
|
||||
convicts,
|
||||
SUM(total) AS total,
|
||||
SUM(higher) AS higher,
|
||||
SUM(average_prof) AS average_prof,
|
||||
SUM(only_general) AS only_general,
|
||||
SUM(count_nodata) AS count_nodata
|
||||
FROM final_counts
|
||||
GROUP BY recruitment_id, convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
recruitment_id,
|
||||
'ALL' AS convicts,
|
||||
SUM(total) AS total,
|
||||
SUM(higher) AS higher,
|
||||
SUM(average_prof) AS average_prof,
|
||||
SUM(only_general) AS only_general,
|
||||
SUM(count_nodata) AS count_nodata
|
||||
FROM final_counts
|
||||
GROUP BY recruitment_id
|
||||
)
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
CASE
|
||||
WHEN fc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
fc.convicts,
|
||||
fc.recruitment_id,
|
||||
fc.higher,
|
||||
fc.average_prof,
|
||||
fc.only_general,
|
||||
fc.count_nodata,
|
||||
fc.total,
|
||||
COALESCE(ROUND(fc.higher * 100.0 / NULLIF(fc.total, 0), 2), 0) AS higher_percentage,
|
||||
COALESCE(ROUND(fc.average_prof * 100.0 / NULLIF(fc.total, 0), 2), 0) AS average_prof_percentage,
|
||||
COALESCE(ROUND(fc.only_general * 100.0 / NULLIF(fc.total, 0), 2), 0) AS only_general_percentage,
|
||||
COALESCE(ROUND(fc.count_nodata * 100.0 / NULLIF(fc.total, 0), 2), 0) AS count_nodata_percentage
|
||||
FROM final_counts fc
|
||||
UNION ALL
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
fca.gender,
|
||||
fca.convicts,
|
||||
fca.recruitment_id,
|
||||
fca.higher,
|
||||
fca.average_prof,
|
||||
fca.only_general,
|
||||
fca.count_nodata,
|
||||
fca.total,
|
||||
COALESCE(ROUND(fca.higher * 100.0 / NULLIF(fca.total, 0), 2), 0) AS higher_percentage,
|
||||
COALESCE(ROUND(fca.average_prof * 100.0 / NULLIF(fca.total, 0), 2), 0) AS average_prof_percentage,
|
||||
COALESCE(ROUND(fca.only_general * 100.0 / NULLIF(fca.total, 0), 2), 0) AS only_general_percentage,
|
||||
COALESCE(ROUND(fca.count_nodata * 100.0 / NULLIF(fca.total, 0), 2), 0) AS count_nodata_percentage
|
||||
FROM final_counts_all fca</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1072</xloc>
|
||||
<yloc>496</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,350 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.education_level_pr5(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины</from>
|
||||
<to>Insert / update (total_registered.education_level) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.education_level) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>education_level</table>
|
||||
<value>
|
||||
<name>higher</name>
|
||||
<rename>higher</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>average</name>
|
||||
<rename>average_prof</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>only_general</name>
|
||||
<rename>only_general</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>no_data</name>
|
||||
<rename>count_nodata</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>higher_percent</name>
|
||||
<rename>higher_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>average_percent</name>
|
||||
<rename>average_prof_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>only_general_percent</name>
|
||||
<rename>only_general_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>no_data_percent</name>
|
||||
<rename>count_nodata_percentage</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>education_level</name>
|
||||
<rename>total</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>1728</xloc>
|
||||
<yloc>496</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) РФ/мужчины</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 (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_5}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
last_status 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 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
|
||||
),
|
||||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
)
|
||||
) AS has_higher,
|
||||
|
||||
-- Среднее профессиональное образование (если нет высшего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('6', '8', '10', '11')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('6', '8', '10', '11')
|
||||
)
|
||||
) AS has_average_prof,
|
||||
|
||||
-- Общее образование (если нет высшего и среднего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
NOT (
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
|
||||
)
|
||||
)
|
||||
) AND (
|
||||
ri.info->'svedFL'->'svedRObr'->>'prOtsRObr' = '1'
|
||||
OR ri.info->'svedFL'->'svedInObr'->>'prOtsInObr' = '1'
|
||||
)
|
||||
) AS has_no_data
|
||||
|
||||
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.gender IN ('MALE', 'FEMALE')
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
AND rh.id in (SELECT recruit_history_id FROM registered)
|
||||
-- AND r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
AND coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
es.gender,
|
||||
es.recruitment_id,
|
||||
es.convicts,
|
||||
COUNT(DISTINCT es.id) AS total,
|
||||
COUNT(DISTINCT CASE WHEN es.has_higher THEN es.id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND es.has_average_prof THEN es.id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND NOT es.has_average_prof AND es.has_only_general THEN es.id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN es.has_no_data THEN es.id END) AS count_nodata
|
||||
FROM education_status es
|
||||
GROUP BY es.recruitment_id, es.gender, es.convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
es.gender,
|
||||
es.recruitment_id,
|
||||
'ALL' AS convicts,
|
||||
COUNT(DISTINCT es.id) AS total,
|
||||
COUNT(DISTINCT CASE WHEN es.has_higher THEN es.id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND es.has_average_prof THEN es.id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT es.has_higher AND NOT es.has_average_prof AND es.has_only_general THEN es.id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN es.has_no_data THEN es.id END) AS count_nodata
|
||||
FROM education_status es
|
||||
GROUP BY es.recruitment_id, es.gender
|
||||
),
|
||||
final_counts_all AS (
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
recruitment_id,
|
||||
convicts,
|
||||
SUM(total) AS total,
|
||||
SUM(higher) AS higher,
|
||||
SUM(average_prof) AS average_prof,
|
||||
SUM(only_general) AS only_general,
|
||||
SUM(count_nodata) AS count_nodata
|
||||
FROM final_counts
|
||||
GROUP BY recruitment_id, convicts
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
recruitment_id,
|
||||
'ALL' AS convicts,
|
||||
SUM(total) AS total,
|
||||
SUM(higher) AS higher,
|
||||
SUM(average_prof) AS average_prof,
|
||||
SUM(only_general) AS only_general,
|
||||
SUM(count_nodata) AS count_nodata
|
||||
FROM final_counts
|
||||
GROUP BY recruitment_id
|
||||
)
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
CASE
|
||||
WHEN fc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
fc.convicts,
|
||||
fc.recruitment_id,
|
||||
fc.higher,
|
||||
fc.average_prof,
|
||||
fc.only_general,
|
||||
fc.count_nodata,
|
||||
fc.total,
|
||||
COALESCE(ROUND(fc.higher * 100.0 / NULLIF(fc.total, 0), 2), 0) AS higher_percentage,
|
||||
COALESCE(ROUND(fc.average_prof * 100.0 / NULLIF(fc.total, 0), 2), 0) AS average_prof_percentage,
|
||||
COALESCE(ROUND(fc.only_general * 100.0 / NULLIF(fc.total, 0), 2), 0) AS only_general_percentage,
|
||||
COALESCE(ROUND(fc.count_nodata * 100.0 / NULLIF(fc.total, 0), 2), 0) AS count_nodata_percentage
|
||||
FROM final_counts fc
|
||||
UNION ALL
|
||||
SELECT
|
||||
current_date AS recording_date,
|
||||
fca.gender,
|
||||
fca.convicts,
|
||||
fca.recruitment_id,
|
||||
fca.higher,
|
||||
fca.average_prof,
|
||||
fca.only_general,
|
||||
fca.count_nodata,
|
||||
fca.total,
|
||||
COALESCE(ROUND(fca.higher * 100.0 / NULLIF(fca.total, 0), 2), 0) AS higher_percentage,
|
||||
COALESCE(ROUND(fca.average_prof * 100.0 / NULLIF(fca.total, 0), 2), 0) AS average_prof_percentage,
|
||||
COALESCE(ROUND(fca.only_general * 100.0 / NULLIF(fca.total, 0), 2), 0) AS only_general_percentage,
|
||||
COALESCE(ROUND(fca.count_nodata * 100.0 / NULLIF(fca.total, 0), 2), 0) AS count_nodata_percentage
|
||||
FROM final_counts_all fca</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1072</xloc>
|
||||
<yloc>496</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,312 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<workflow>
|
||||
<name>total_registered.marital_status(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<workflow_version/>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2025/04/01 10:07:53.719</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2025/04/01 10:07:53.719</modified_date>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<actions>
|
||||
<action>
|
||||
<name>Start</name>
|
||||
<description/>
|
||||
<type>SPECIAL</type>
|
||||
<attributes/>
|
||||
<DayOfMonth>1</DayOfMonth>
|
||||
<hour>12</hour>
|
||||
<intervalMinutes>60</intervalMinutes>
|
||||
<intervalSeconds>0</intervalSeconds>
|
||||
<minutes>0</minutes>
|
||||
<repeat>N</repeat>
|
||||
<schedulerType>0</schedulerType>
|
||||
<weekDay>1</weekDay>
|
||||
<parallel>Y</parallel>
|
||||
<xloc>512</xloc>
|
||||
<yloc>416</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.marital_status_pr1(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.marital_status(m_c)/total_registered.marital_status_pr1(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_1</name>
|
||||
<stream_name>PART_RECRUITMENT_1</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>896</xloc>
|
||||
<yloc>256</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.marital_status_pr2(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.marital_status(m_c)/total_registered.marital_status_pr2(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_2</name>
|
||||
<stream_name>PART_RECRUITMENT_2</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>896</xloc>
|
||||
<yloc>336</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.marital_status_pr3(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.marital_status(m_c)/total_registered.marital_status_pr3(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_3</name>
|
||||
<stream_name>PART_RECRUITMENT_3</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>896</xloc>
|
||||
<yloc>416</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.marital_status_pr4(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.marital_status(m_c)/total_registered.marital_status_pr4(m_c).hpl</filename>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_4</name>
|
||||
<stream_name>PART_RECRUITMENT_4</stream_name>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>896</xloc>
|
||||
<yloc>496</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>total_registered.marital_status_pr5(m_c).hpl</name>
|
||||
<description/>
|
||||
<type>PIPELINE</type>
|
||||
<attributes/>
|
||||
<add_date>N</add_date>
|
||||
<add_time>N</add_time>
|
||||
<clear_files>N</clear_files>
|
||||
<clear_rows>N</clear_rows>
|
||||
<create_parent_folder>N</create_parent_folder>
|
||||
<exec_per_row>Y</exec_per_row>
|
||||
<filename>${PROJECT_HOME}/mil_com/total_registered.marital_status(m_c)/total_registered.marital_status_pr5(m_c).hpl</filename>
|
||||
<logext/>
|
||||
<logfile/>
|
||||
<loglevel>Basic</loglevel>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<name>ARR_PR_5</name>
|
||||
<stream_name>PART_RECRUITMENT_5</stream_name>
|
||||
<value/>
|
||||
</parameter>
|
||||
<pass_all_parameters>Y</pass_all_parameters>
|
||||
</parameters>
|
||||
<params_from_previous>Y</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>896</xloc>
|
||||
<yloc>576</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1264</xloc>
|
||||
<yloc>256</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 2</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1264</xloc>
|
||||
<yloc>336</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 3</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1264</xloc>
|
||||
<yloc>416</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 4</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1264</xloc>
|
||||
<yloc>496</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
<action>
|
||||
<name>Success 5</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<xloc>1264</xloc>
|
||||
<yloc>576</yloc>
|
||||
<attributes_hac/>
|
||||
</action>
|
||||
</actions>
|
||||
<hops>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.marital_status_pr1(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.marital_status_pr2(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.marital_status_pr3(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.marital_status_pr4(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>total_registered.marital_status_pr5(m_c).hpl</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.marital_status_pr1(m_c).hpl</from>
|
||||
<to>Success</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.marital_status_pr2(m_c).hpl</from>
|
||||
<to>Success 2</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.marital_status_pr3(m_c).hpl</from>
|
||||
<to>Success 3</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.marital_status_pr4(m_c).hpl</from>
|
||||
<to>Success 4</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>total_registered.marital_status_pr5(m_c).hpl</from>
|
||||
<to>Success 5</to>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
</hops>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<attributes/>
|
||||
</workflow>
|
||||
|
|
@ -0,0 +1,270 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.marital_status_pr1(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) регионы/мужчины</from>
|
||||
<to>Insert / update (total_registered.marital_status) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.marital_status) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>marital_status</table>
|
||||
<value>
|
||||
<name>married</name>
|
||||
<rename>married</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_married</name>
|
||||
<rename>not_married</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>married_percent</name>
|
||||
<rename>married_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_married_percent</name>
|
||||
<rename>not_married_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>marital_status</name>
|
||||
<rename>total</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>other</name>
|
||||
<rename>other</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>other_percent</name>
|
||||
<rename>other_percent</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>1680</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) регионы/мужчины</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 (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_1}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
/*
|
||||
last_status 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 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
|
||||
),
|
||||
*/
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
ri.info->'svedFL'->'svedSemPolozh'->>'semPolozh' AS sem_pol,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
r.current_recruitment_id AS recruitment_id
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id
|
||||
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.current_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.gender IN ('MALE', 'FEMALE')
|
||||
/*
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
and rh.id in (SELECT recruit_history_id FROM registered)
|
||||
--and r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
and coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
ri.info->'svedFL'->'svedSemPolozh'->>'semPolozh' AS sem_pol,
|
||||
r.gender,
|
||||
'ALL' AS convicts,
|
||||
r.current_recruitment_id AS recruitment_id
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id
|
||||
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.current_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.gender IN ('MALE', 'FEMALE')
|
||||
/*
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
and rh.id in (SELECT recruit_history_id FROM registered)
|
||||
--and r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
and coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
),
|
||||
married_counts AS (
|
||||
-- Считаем значения для каждого гендера
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.convicts,
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IN ('2', '3')) AS not_married, -- в расзводе/вдова/вдовец
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol = '1') AS married, -- статус в браке
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IS NULL) AS other,
|
||||
COUNT(rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.convicts -- изменено 12.03.2025
|
||||
),
|
||||
all_counts AS (
|
||||
-- Считаем значения для ALL, суммируя данные по всем гендерам
|
||||
SELECT
|
||||
recruitment_id,
|
||||
'ALL' AS gender,
|
||||
convicts,
|
||||
SUM(not_married) AS not_married,
|
||||
SUM(married) AS married,
|
||||
SUM(other) AS other,
|
||||
SUM(total) AS total
|
||||
FROM married_counts
|
||||
GROUP BY recruitment_id, convicts
|
||||
)
|
||||
-- Финальное объединение
|
||||
SELECT
|
||||
mc.not_married,
|
||||
mc.married,
|
||||
mc.total,
|
||||
mc.other,
|
||||
mc.convicts,
|
||||
COALESCE(ROUND(mc.not_married * 100.0 / NULLIF(mc.total, 0), 2), 0) AS not_married_percent,
|
||||
COALESCE(ROUND(mc.married * 100.0 / NULLIF(mc.total, 0), 2), 0) AS married_percent,
|
||||
COALESCE(ROUND(mc.other * 100.0 / NULLIF(mc.total, 0), 2), 0) AS other_percent,
|
||||
CASE
|
||||
WHEN mc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
current_date AS recording_date,
|
||||
mc.recruitment_id
|
||||
FROM married_counts mc
|
||||
UNION ALL
|
||||
SELECT
|
||||
ac.not_married,
|
||||
ac.married,
|
||||
ac.total,
|
||||
ac.other,
|
||||
ac.convicts,
|
||||
COALESCE(ROUND(ac.not_married * 100.0 / NULLIF(ac.total, 0), 2), 0) AS not_married_percent,
|
||||
COALESCE(ROUND(ac.married * 100.0 / NULLIF(ac.total, 0), 2), 0) AS married_percent,
|
||||
COALESCE(ROUND(ac.other * 100.0 / NULLIF(ac.total, 0), 2), 0) AS other_percent,
|
||||
ac.gender,
|
||||
current_date AS recording_date,
|
||||
ac.recruitment_id
|
||||
FROM all_counts ac</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1040</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,270 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.marital_status_pr2(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) регионы/мужчины</from>
|
||||
<to>Insert / update (total_registered.marital_status) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.marital_status) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>marital_status</table>
|
||||
<value>
|
||||
<name>married</name>
|
||||
<rename>married</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_married</name>
|
||||
<rename>not_married</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>married_percent</name>
|
||||
<rename>married_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_married_percent</name>
|
||||
<rename>not_married_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>marital_status</name>
|
||||
<rename>total</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>other</name>
|
||||
<rename>other</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>other_percent</name>
|
||||
<rename>other_percent</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>1680</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) регионы/мужчины</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 (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_2}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
/*
|
||||
last_status 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 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
|
||||
),
|
||||
*/
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
ri.info->'svedFL'->'svedSemPolozh'->>'semPolozh' AS sem_pol,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
r.current_recruitment_id AS recruitment_id
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id
|
||||
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.current_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.gender IN ('MALE', 'FEMALE')
|
||||
/*
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
and rh.id in (SELECT recruit_history_id FROM registered)
|
||||
--and r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
and coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
ri.info->'svedFL'->'svedSemPolozh'->>'semPolozh' AS sem_pol,
|
||||
r.gender,
|
||||
'ALL' AS convicts,
|
||||
r.current_recruitment_id AS recruitment_id
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id
|
||||
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.current_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.gender IN ('MALE', 'FEMALE')
|
||||
/*
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
and rh.id in (SELECT recruit_history_id FROM registered)
|
||||
--and r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
and coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
),
|
||||
married_counts AS (
|
||||
-- Считаем значения для каждого гендера
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.convicts,
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IN ('2', '3')) AS not_married, -- в расзводе/вдова/вдовец
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol = '1') AS married, -- статус в браке
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IS NULL) AS other,
|
||||
COUNT(rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.convicts -- изменено 12.03.2025
|
||||
),
|
||||
all_counts AS (
|
||||
-- Считаем значения для ALL, суммируя данные по всем гендерам
|
||||
SELECT
|
||||
recruitment_id,
|
||||
'ALL' AS gender,
|
||||
convicts,
|
||||
SUM(not_married) AS not_married,
|
||||
SUM(married) AS married,
|
||||
SUM(other) AS other,
|
||||
SUM(total) AS total
|
||||
FROM married_counts
|
||||
GROUP BY recruitment_id, convicts
|
||||
)
|
||||
-- Финальное объединение
|
||||
SELECT
|
||||
mc.not_married,
|
||||
mc.married,
|
||||
mc.total,
|
||||
mc.other,
|
||||
mc.convicts,
|
||||
COALESCE(ROUND(mc.not_married * 100.0 / NULLIF(mc.total, 0), 2), 0) AS not_married_percent,
|
||||
COALESCE(ROUND(mc.married * 100.0 / NULLIF(mc.total, 0), 2), 0) AS married_percent,
|
||||
COALESCE(ROUND(mc.other * 100.0 / NULLIF(mc.total, 0), 2), 0) AS other_percent,
|
||||
CASE
|
||||
WHEN mc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
current_date AS recording_date,
|
||||
mc.recruitment_id
|
||||
FROM married_counts mc
|
||||
UNION ALL
|
||||
SELECT
|
||||
ac.not_married,
|
||||
ac.married,
|
||||
ac.total,
|
||||
ac.other,
|
||||
ac.convicts,
|
||||
COALESCE(ROUND(ac.not_married * 100.0 / NULLIF(ac.total, 0), 2), 0) AS not_married_percent,
|
||||
COALESCE(ROUND(ac.married * 100.0 / NULLIF(ac.total, 0), 2), 0) AS married_percent,
|
||||
COALESCE(ROUND(ac.other * 100.0 / NULLIF(ac.total, 0), 2), 0) AS other_percent,
|
||||
ac.gender,
|
||||
current_date AS recording_date,
|
||||
ac.recruitment_id
|
||||
FROM all_counts ac</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1040</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,270 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.marital_status_pr3(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) регионы/мужчины</from>
|
||||
<to>Insert / update (total_registered.marital_status) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.marital_status) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>marital_status</table>
|
||||
<value>
|
||||
<name>married</name>
|
||||
<rename>married</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_married</name>
|
||||
<rename>not_married</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>married_percent</name>
|
||||
<rename>married_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_married_percent</name>
|
||||
<rename>not_married_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>marital_status</name>
|
||||
<rename>total</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>other</name>
|
||||
<rename>other</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>other_percent</name>
|
||||
<rename>other_percent</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>1680</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) регионы/мужчины</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 (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_3}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
/*
|
||||
last_status 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 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
|
||||
),
|
||||
*/
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
ri.info->'svedFL'->'svedSemPolozh'->>'semPolozh' AS sem_pol,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
r.current_recruitment_id AS recruitment_id
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id
|
||||
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.current_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.gender IN ('MALE', 'FEMALE')
|
||||
/*
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
and rh.id in (SELECT recruit_history_id FROM registered)
|
||||
--and r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
and coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
ri.info->'svedFL'->'svedSemPolozh'->>'semPolozh' AS sem_pol,
|
||||
r.gender,
|
||||
'ALL' AS convicts,
|
||||
r.current_recruitment_id AS recruitment_id
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id
|
||||
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.current_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.gender IN ('MALE', 'FEMALE')
|
||||
/*
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
and rh.id in (SELECT recruit_history_id FROM registered)
|
||||
--and r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
and coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
),
|
||||
married_counts AS (
|
||||
-- Считаем значения для каждого гендера
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.convicts,
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IN ('2', '3')) AS not_married, -- в расзводе/вдова/вдовец
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol = '1') AS married, -- статус в браке
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IS NULL) AS other,
|
||||
COUNT(rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.convicts -- изменено 12.03.2025
|
||||
),
|
||||
all_counts AS (
|
||||
-- Считаем значения для ALL, суммируя данные по всем гендерам
|
||||
SELECT
|
||||
recruitment_id,
|
||||
'ALL' AS gender,
|
||||
convicts,
|
||||
SUM(not_married) AS not_married,
|
||||
SUM(married) AS married,
|
||||
SUM(other) AS other,
|
||||
SUM(total) AS total
|
||||
FROM married_counts
|
||||
GROUP BY recruitment_id, convicts
|
||||
)
|
||||
-- Финальное объединение
|
||||
SELECT
|
||||
mc.not_married,
|
||||
mc.married,
|
||||
mc.total,
|
||||
mc.other,
|
||||
mc.convicts,
|
||||
COALESCE(ROUND(mc.not_married * 100.0 / NULLIF(mc.total, 0), 2), 0) AS not_married_percent,
|
||||
COALESCE(ROUND(mc.married * 100.0 / NULLIF(mc.total, 0), 2), 0) AS married_percent,
|
||||
COALESCE(ROUND(mc.other * 100.0 / NULLIF(mc.total, 0), 2), 0) AS other_percent,
|
||||
CASE
|
||||
WHEN mc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
current_date AS recording_date,
|
||||
mc.recruitment_id
|
||||
FROM married_counts mc
|
||||
UNION ALL
|
||||
SELECT
|
||||
ac.not_married,
|
||||
ac.married,
|
||||
ac.total,
|
||||
ac.other,
|
||||
ac.convicts,
|
||||
COALESCE(ROUND(ac.not_married * 100.0 / NULLIF(ac.total, 0), 2), 0) AS not_married_percent,
|
||||
COALESCE(ROUND(ac.married * 100.0 / NULLIF(ac.total, 0), 2), 0) AS married_percent,
|
||||
COALESCE(ROUND(ac.other * 100.0 / NULLIF(ac.total, 0), 2), 0) AS other_percent,
|
||||
ac.gender,
|
||||
current_date AS recording_date,
|
||||
ac.recruitment_id
|
||||
FROM all_counts ac</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1040</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,270 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.marital_status_pr4(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) регионы/мужчины</from>
|
||||
<to>Insert / update (total_registered.marital_status) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.marital_status) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>marital_status</table>
|
||||
<value>
|
||||
<name>married</name>
|
||||
<rename>married</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_married</name>
|
||||
<rename>not_married</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>married_percent</name>
|
||||
<rename>married_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_married_percent</name>
|
||||
<rename>not_married_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>marital_status</name>
|
||||
<rename>total</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>other</name>
|
||||
<rename>other</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>other_percent</name>
|
||||
<rename>other_percent</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>1680</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) регионы/мужчины</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 (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_4}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
/*
|
||||
last_status 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 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
|
||||
),
|
||||
*/
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
ri.info->'svedFL'->'svedSemPolozh'->>'semPolozh' AS sem_pol,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
r.current_recruitment_id AS recruitment_id
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id
|
||||
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.current_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.gender IN ('MALE', 'FEMALE')
|
||||
/*
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
and rh.id in (SELECT recruit_history_id FROM registered)
|
||||
--and r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
and coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
ri.info->'svedFL'->'svedSemPolozh'->>'semPolozh' AS sem_pol,
|
||||
r.gender,
|
||||
'ALL' AS convicts,
|
||||
r.current_recruitment_id AS recruitment_id
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id
|
||||
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.current_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.gender IN ('MALE', 'FEMALE')
|
||||
/*
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
and rh.id in (SELECT recruit_history_id FROM registered)
|
||||
--and r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
and coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
),
|
||||
married_counts AS (
|
||||
-- Считаем значения для каждого гендера
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.convicts,
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IN ('2', '3')) AS not_married, -- в расзводе/вдова/вдовец
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol = '1') AS married, -- статус в браке
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IS NULL) AS other,
|
||||
COUNT(rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.convicts -- изменено 12.03.2025
|
||||
),
|
||||
all_counts AS (
|
||||
-- Считаем значения для ALL, суммируя данные по всем гендерам
|
||||
SELECT
|
||||
recruitment_id,
|
||||
'ALL' AS gender,
|
||||
convicts,
|
||||
SUM(not_married) AS not_married,
|
||||
SUM(married) AS married,
|
||||
SUM(other) AS other,
|
||||
SUM(total) AS total
|
||||
FROM married_counts
|
||||
GROUP BY recruitment_id, convicts
|
||||
)
|
||||
-- Финальное объединение
|
||||
SELECT
|
||||
mc.not_married,
|
||||
mc.married,
|
||||
mc.total,
|
||||
mc.other,
|
||||
mc.convicts,
|
||||
COALESCE(ROUND(mc.not_married * 100.0 / NULLIF(mc.total, 0), 2), 0) AS not_married_percent,
|
||||
COALESCE(ROUND(mc.married * 100.0 / NULLIF(mc.total, 0), 2), 0) AS married_percent,
|
||||
COALESCE(ROUND(mc.other * 100.0 / NULLIF(mc.total, 0), 2), 0) AS other_percent,
|
||||
CASE
|
||||
WHEN mc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
current_date AS recording_date,
|
||||
mc.recruitment_id
|
||||
FROM married_counts mc
|
||||
UNION ALL
|
||||
SELECT
|
||||
ac.not_married,
|
||||
ac.married,
|
||||
ac.total,
|
||||
ac.other,
|
||||
ac.convicts,
|
||||
COALESCE(ROUND(ac.not_married * 100.0 / NULLIF(ac.total, 0), 2), 0) AS not_married_percent,
|
||||
COALESCE(ROUND(ac.married * 100.0 / NULLIF(ac.total, 0), 2), 0) AS married_percent,
|
||||
COALESCE(ROUND(ac.other * 100.0 / NULLIF(ac.total, 0), 2), 0) AS other_percent,
|
||||
ac.gender,
|
||||
current_date AS recording_date,
|
||||
ac.recruitment_id
|
||||
FROM all_counts ac</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1040</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
|
|
@ -0,0 +1,270 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pipeline>
|
||||
<info>
|
||||
<name>total_registered.marital_status_pr5(m_c)</name>
|
||||
<name_sync_with_filename>Y</name_sync_with_filename>
|
||||
<description/>
|
||||
<extended_description/>
|
||||
<pipeline_version/>
|
||||
<pipeline_type>Normal</pipeline_type>
|
||||
<pipeline_status>0</pipeline_status>
|
||||
<parameters>
|
||||
</parameters>
|
||||
<capture_transform_performance>N</capture_transform_performance>
|
||||
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
|
||||
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
|
||||
<created_user>-</created_user>
|
||||
<created_date>2024/08/02 11:56:22.507</created_date>
|
||||
<modified_user>-</modified_user>
|
||||
<modified_date>2024/08/02 11:56:22.507</modified_date>
|
||||
</info>
|
||||
<notepads>
|
||||
</notepads>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) регионы/мужчины</from>
|
||||
<to>Insert / update (total_registered.marital_status) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<transform>
|
||||
<name>Insert / update (total_registered.marital_status) 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>"all_M_W"</field>
|
||||
<name>gender</name>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>convicts</field>
|
||||
<name>convicts</name>
|
||||
</key>
|
||||
<schema>total_registered</schema>
|
||||
<table>marital_status</table>
|
||||
<value>
|
||||
<name>married</name>
|
||||
<rename>married</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_married</name>
|
||||
<rename>not_married</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>married_percent</name>
|
||||
<rename>married_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_married_percent</name>
|
||||
<rename>not_married_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>marital_status</name>
|
||||
<rename>total</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>other</name>
|
||||
<rename>other</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>other_percent</name>
|
||||
<rename>other_percent</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>1680</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform>
|
||||
<name>Table input (person_registry) регионы/мужчины</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 (
|
||||
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_PR_5}'), ','))::uuid AS recruitment_id
|
||||
),
|
||||
/*
|
||||
last_status 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 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
|
||||
),
|
||||
*/
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
ri.info->'svedFL'->'svedSemPolozh'->>'semPolozh' AS sem_pol,
|
||||
r.gender,
|
||||
CASE
|
||||
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
|
||||
ELSE 'NOTCONVICT'
|
||||
END AS convicts,
|
||||
r.current_recruitment_id AS recruitment_id
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id
|
||||
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.current_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.gender IN ('MALE', 'FEMALE')
|
||||
/*
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
and rh.id in (SELECT recruit_history_id FROM registered)
|
||||
--and r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
and coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
ri.info->'svedFL'->'svedSemPolozh'->>'semPolozh' AS sem_pol,
|
||||
r.gender,
|
||||
'ALL' AS convicts,
|
||||
r.current_recruitment_id AS recruitment_id
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id
|
||||
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.current_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
|
||||
AND r.gender IN ('MALE', 'FEMALE')
|
||||
/*
|
||||
AND r.id in (SELECT recruit_id FROM registered)
|
||||
and rh.id in (SELECT recruit_history_id FROM registered)
|
||||
--and r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
|
||||
and coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
|
||||
*/
|
||||
),
|
||||
married_counts AS (
|
||||
-- Считаем значения для каждого гендера
|
||||
SELECT
|
||||
rd.recruitment_id,
|
||||
rd.gender,
|
||||
rd.convicts,
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IN ('2', '3')) AS not_married, -- в расзводе/вдова/вдовец
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol = '1') AS married, -- статус в браке
|
||||
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IS NULL) AS other,
|
||||
COUNT(rd.recruit_id) AS total
|
||||
FROM recruit_data rd
|
||||
GROUP BY rd.recruitment_id, rd.gender, rd.convicts -- изменено 12.03.2025
|
||||
),
|
||||
all_counts AS (
|
||||
-- Считаем значения для ALL, суммируя данные по всем гендерам
|
||||
SELECT
|
||||
recruitment_id,
|
||||
'ALL' AS gender,
|
||||
convicts,
|
||||
SUM(not_married) AS not_married,
|
||||
SUM(married) AS married,
|
||||
SUM(other) AS other,
|
||||
SUM(total) AS total
|
||||
FROM married_counts
|
||||
GROUP BY recruitment_id, convicts
|
||||
)
|
||||
-- Финальное объединение
|
||||
SELECT
|
||||
mc.not_married,
|
||||
mc.married,
|
||||
mc.total,
|
||||
mc.other,
|
||||
mc.convicts,
|
||||
COALESCE(ROUND(mc.not_married * 100.0 / NULLIF(mc.total, 0), 2), 0) AS not_married_percent,
|
||||
COALESCE(ROUND(mc.married * 100.0 / NULLIF(mc.total, 0), 2), 0) AS married_percent,
|
||||
COALESCE(ROUND(mc.other * 100.0 / NULLIF(mc.total, 0), 2), 0) AS other_percent,
|
||||
CASE
|
||||
WHEN mc.gender = 'MALE' THEN 'M'
|
||||
ELSE 'W'
|
||||
END AS gender,
|
||||
current_date AS recording_date,
|
||||
mc.recruitment_id
|
||||
FROM married_counts mc
|
||||
UNION ALL
|
||||
SELECT
|
||||
ac.not_married,
|
||||
ac.married,
|
||||
ac.total,
|
||||
ac.other,
|
||||
ac.convicts,
|
||||
COALESCE(ROUND(ac.not_married * 100.0 / NULLIF(ac.total, 0), 2), 0) AS not_married_percent,
|
||||
COALESCE(ROUND(ac.married * 100.0 / NULLIF(ac.total, 0), 2), 0) AS married_percent,
|
||||
COALESCE(ROUND(ac.other * 100.0 / NULLIF(ac.total, 0), 2), 0) AS other_percent,
|
||||
ac.gender,
|
||||
current_date AS recording_date,
|
||||
ac.recruitment_id
|
||||
FROM all_counts ac</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
<xloc>1040</xloc>
|
||||
<yloc>544</yloc>
|
||||
</GUI>
|
||||
</transform>
|
||||
<transform_error_handling>
|
||||
</transform_error_handling>
|
||||
<attributes/>
|
||||
</pipeline>
|
||||
Loading…
Add table
Add a link
Reference in a new issue