//
This commit is contained in:
parent
95f88087ef
commit
66b234139c
9 changed files with 1514 additions and 869 deletions
|
|
@ -504,6 +504,57 @@
|
|||
</attribute>
|
||||
</attributes>
|
||||
</connection>
|
||||
<connection>
|
||||
<name>ervu_person_registry</name>
|
||||
<server>person-dbhost</server>
|
||||
<type>POSTGRESQL</type>
|
||||
<access>Native</access>
|
||||
<database>person-dbname</database>
|
||||
<port>4444</port>
|
||||
<username>person-dbuser</username>
|
||||
<password>Encrypted 2be98afb80fd5818ba554aa72ce93bcc9</password>
|
||||
<servername/>
|
||||
<data_tablespace/>
|
||||
<index_tablespace/>
|
||||
<attributes>
|
||||
<attribute>
|
||||
<code>FORCE_IDENTIFIERS_TO_LOWERCASE</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>FORCE_IDENTIFIERS_TO_UPPERCASE</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>IS_CLUSTERED</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>PORT_NUMBER</code>
|
||||
<attribute>4444</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>PRESERVE_RESERVED_WORD_CASE</code>
|
||||
<attribute>Y</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>QUOTE_ALL_FIELDS</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>SUPPORTS_BOOLEAN_DATA_TYPE</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>SUPPORTS_TIMESTAMP_DATA_TYPE</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>USE_POOLING</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
</attributes>
|
||||
</connection>
|
||||
<connection>
|
||||
<name>postgres.subpoena</name>
|
||||
<server>subpoena-dbhost</server>
|
||||
|
|
@ -557,15 +608,55 @@
|
|||
</connection>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (subpoena) РФ/весна</from>
|
||||
<to>Insert / update (main_dashboard.recruitment_campaign) 2</to>
|
||||
<from>Sort rows 2 2</from>
|
||||
<to>Merge join 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Sort rows 3</from>
|
||||
<to>Merge join 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/осень</from>
|
||||
<to>Sort rows 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (subpoena) РФ/осень</from>
|
||||
<to>Sort rows 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Merge join 2</from>
|
||||
<to>Insert / update (main_dashboard.recruitment_campaign)</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Sort rows 2 2 2</from>
|
||||
<to>Merge join 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Sort rows 3 2</from>
|
||||
<to>Merge join 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (subpoena) РФ/весна</from>
|
||||
<to>Sort rows 2 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Merge join 2 2</from>
|
||||
<to>Insert / update (main_dashboard.recruitment_campaign) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/весна</from>
|
||||
<to>Sort rows 3 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<step>
|
||||
<name>Insert / update (main_dashboard.recruitment_campaign)</name>
|
||||
|
|
@ -666,8 +757,8 @@
|
|||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>928</xloc>
|
||||
<yloc>288</yloc>
|
||||
<xloc>1184</xloc>
|
||||
<yloc>128</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
|
|
@ -770,8 +861,346 @@
|
|||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>928</xloc>
|
||||
<yloc>352</yloc>
|
||||
<xloc>1184</xloc>
|
||||
<yloc>400</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Merge join 2</name>
|
||||
<type>MergeJoin</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<join_type>FULL OUTER</join_type>
|
||||
<step1>Sort rows 2 2</step1>
|
||||
<step2>Sort rows 3</step2>
|
||||
<keys_1>
|
||||
<key>org</key>
|
||||
</keys_1>
|
||||
<keys_2>
|
||||
<key>org</key>
|
||||
</keys_2>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>864</xloc>
|
||||
<yloc>128</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Merge join 2 2</name>
|
||||
<type>MergeJoin</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<join_type>FULL OUTER</join_type>
|
||||
<step1>Sort rows 2 2 2</step1>
|
||||
<step2>Sort rows 3 2</step2>
|
||||
<keys_1>
|
||||
<key>org</key>
|
||||
</keys_1>
|
||||
<keys_2>
|
||||
<key>org</key>
|
||||
</keys_2>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>864</xloc>
|
||||
<yloc>400</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Sort rows 2 2</name>
|
||||
<type>SortRows</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<directory>%%java.io.tmpdir%%</directory>
|
||||
<prefix>out</prefix>
|
||||
<sort_size>1000000</sort_size>
|
||||
<free_memory/>
|
||||
<compress>N</compress>
|
||||
<compress_variable/>
|
||||
<unique_rows>N</unique_rows>
|
||||
<fields>
|
||||
<field>
|
||||
<name>org</name>
|
||||
<ascending>Y</ascending>
|
||||
<case_sensitive>N</case_sensitive>
|
||||
<collator_enabled>N</collator_enabled>
|
||||
<collator_strength>0</collator_strength>
|
||||
<presorted>N</presorted>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>768</xloc>
|
||||
<yloc>128</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Sort rows 2 2 2</name>
|
||||
<type>SortRows</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<directory>%%java.io.tmpdir%%</directory>
|
||||
<prefix>out</prefix>
|
||||
<sort_size>1000000</sort_size>
|
||||
<free_memory/>
|
||||
<compress>N</compress>
|
||||
<compress_variable/>
|
||||
<unique_rows>N</unique_rows>
|
||||
<fields>
|
||||
<field>
|
||||
<name>org</name>
|
||||
<ascending>Y</ascending>
|
||||
<case_sensitive>N</case_sensitive>
|
||||
<collator_enabled>N</collator_enabled>
|
||||
<collator_strength>0</collator_strength>
|
||||
<presorted>N</presorted>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>768</xloc>
|
||||
<yloc>400</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Sort rows 3</name>
|
||||
<type>SortRows</type>
|
||||
<description/>
|
||||
<distribute>N</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<directory>%%java.io.tmpdir%%</directory>
|
||||
<prefix>out</prefix>
|
||||
<sort_size>1000000</sort_size>
|
||||
<free_memory/>
|
||||
<compress>N</compress>
|
||||
<compress_variable/>
|
||||
<unique_rows>N</unique_rows>
|
||||
<fields>
|
||||
<field>
|
||||
<name>org</name>
|
||||
<ascending>Y</ascending>
|
||||
<case_sensitive>N</case_sensitive>
|
||||
<collator_enabled>N</collator_enabled>
|
||||
<collator_strength>0</collator_strength>
|
||||
<presorted>N</presorted>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>752</xloc>
|
||||
<yloc>240</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Sort rows 3 2</name>
|
||||
<type>SortRows</type>
|
||||
<description/>
|
||||
<distribute>N</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<directory>%%java.io.tmpdir%%</directory>
|
||||
<prefix>out</prefix>
|
||||
<sort_size>1000000</sort_size>
|
||||
<free_memory/>
|
||||
<compress>N</compress>
|
||||
<compress_variable/>
|
||||
<unique_rows>N</unique_rows>
|
||||
<fields>
|
||||
<field>
|
||||
<name>org</name>
|
||||
<ascending>Y</ascending>
|
||||
<case_sensitive>N</case_sensitive>
|
||||
<collator_enabled>N</collator_enabled>
|
||||
<collator_strength>0</collator_strength>
|
||||
<presorted>N</presorted>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>752</xloc>
|
||||
<yloc>512</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<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>
|
||||
<sql>SELECT
|
||||
1 AS org,
|
||||
COUNT(*) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 30
|
||||
AND gender = 'MALE' -- мужчины от 18 до 30 лет
|
||||
AND (conscription IS NULL OR conscription = false) -- отсутствие отсрочки
|
||||
) AS new_recruits,
|
||||
COUNT(*) FILTER (
|
||||
WHERE conscription = true
|
||||
) AS postponement_granted,
|
||||
ROUND(COUNT(*) FILTER (WHERE conscription = true) * 100.0 / NULLIF(COUNT(*) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 30
|
||||
AND gender = 'MALE' -- мужчины от 18 до 30 лет
|
||||
AND (conscription IS NULL OR conscription = false)), 0), 2) AS postponement_granted_percent
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri
|
||||
ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info ->> 'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
<variables_active>N</variables_active>
|
||||
<lazy_conversion_active>N</lazy_conversion_active>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>496</xloc>
|
||||
<yloc>512</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<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>
|
||||
<sql>SELECT
|
||||
1 AS org,
|
||||
COUNT(*) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 30
|
||||
AND gender = 'MALE' -- мужчины от 18 до 30 лет
|
||||
AND (conscription IS NULL OR conscription = false) -- отсутствие отсрочки
|
||||
) AS new_recruits,
|
||||
COUNT(*) FILTER (
|
||||
WHERE conscription = true
|
||||
) AS postponement_granted,
|
||||
ROUND(COUNT(*) FILTER (WHERE conscription = true) * 100.0 / NULLIF(COUNT(*) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 30
|
||||
AND gender = 'MALE' -- мужчины от 18 до 30 лет
|
||||
AND (conscription IS NULL OR conscription = false)), 0), 2) AS postponement_granted_percent
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri
|
||||
ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info ->> 'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
<variables_active>N</variables_active>
|
||||
<lazy_conversion_active>N</lazy_conversion_active>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>496</xloc>
|
||||
<yloc>240</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
|
|
@ -809,7 +1238,7 @@
|
|||
LEFT JOIN public.restriction_document AS rd ON rd.subpoena_id = s.id
|
||||
LEFT JOIN public.restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN public.subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
WHERE sr.type = '1'
|
||||
WHERE sr.type = '3'
|
||||
AND EXTRACT(YEAR FROM AGE(s.date_birth)) BETWEEN 18 AND 30
|
||||
),
|
||||
last_status_data AS (
|
||||
|
|
@ -842,7 +1271,7 @@ t2 AS (
|
|||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '5'
|
||||
WHERE sub_stat_hist in ('5', '5.1')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT recruit_id) AS new_recruits
|
||||
|
|
@ -854,11 +1283,11 @@ SELECT
|
|||
t3.count_not_appeared,
|
||||
ROUND(count_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS appeared_on_subpoenas_percent,
|
||||
ROUND(count_not_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_appeared_on_subpoenas_percent,
|
||||
t4.new_recruits,
|
||||
-- t4.new_recruits,
|
||||
0 AS postponement_have_right,
|
||||
0 AS postponement_granted,
|
||||
-- 0 AS postponement_granted,
|
||||
0 AS postponement_have_right_percent,
|
||||
0 AS postponement_granted_percent,
|
||||
-- 0 AS postponement_granted_percent,
|
||||
'Весна' AS spring_autumn,
|
||||
'00' AS recruitment_id,
|
||||
1 AS org
|
||||
|
|
@ -880,8 +1309,8 @@ JOIN t4 ON true;</sql>
|
|||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>512</xloc>
|
||||
<yloc>352</yloc>
|
||||
<xloc>496</xloc>
|
||||
<yloc>400</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
|
|
@ -919,7 +1348,7 @@ JOIN t4 ON true;</sql>
|
|||
LEFT JOIN public.restriction_document AS rd ON rd.subpoena_id = s.id
|
||||
LEFT JOIN public.restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN public.subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
WHERE sr.type = '1'
|
||||
WHERE sr.type = '3' -- статус изменен на 3
|
||||
AND EXTRACT(YEAR FROM AGE(s.date_birth)) BETWEEN 18 AND 30
|
||||
),
|
||||
last_status_data AS (
|
||||
|
|
@ -952,7 +1381,7 @@ t2 AS (
|
|||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '5'
|
||||
WHERE sub_stat_hist in ('5', '5.1') -- добавлен статус 5.1
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT recruit_id) AS new_recruits
|
||||
|
|
@ -964,11 +1393,11 @@ SELECT
|
|||
t3.count_not_appeared,
|
||||
ROUND(count_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS appeared_on_subpoenas_percent,
|
||||
ROUND(count_not_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_appeared_on_subpoenas_percent,
|
||||
t4.new_recruits,
|
||||
-- t4.new_recruits,
|
||||
0 AS postponement_have_right,
|
||||
0 AS postponement_granted,
|
||||
-- 0 AS postponement_granted,
|
||||
0 AS postponement_have_right_percent,
|
||||
0 AS postponement_granted_percent,
|
||||
-- 0 AS postponement_granted_percent,
|
||||
'Осень' AS spring_autumn,
|
||||
'00' AS recruitment_id,
|
||||
1 AS org
|
||||
|
|
@ -990,8 +1419,8 @@ JOIN t4 ON true;</sql>
|
|||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>512</xloc>
|
||||
<yloc>288</yloc>
|
||||
<xloc>496</xloc>
|
||||
<yloc>128</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
|
|
|
|||
|
|
@ -550,7 +550,7 @@
|
|||
</hop>
|
||||
<hop>
|
||||
<from>Table input (subpoena) Весна/РФ</from>
|
||||
<to>Insert / update (recruitment_campaign.subpoenas) 2</to>
|
||||
<to>Insert / update (recruitment_campaign.subpoenas) 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
|
|
@ -663,6 +663,26 @@
|
|||
<rename>spring_autumn</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>count_not_delivery</name>
|
||||
<rename>count_not_delivery</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good</name>
|
||||
<rename>appear_date_is_good</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_delivery_percent</name>
|
||||
<rename>not_delivery_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good_percent</name>
|
||||
<rename>appear_date_is_good_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
|
|
@ -673,13 +693,13 @@
|
|||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>880</xloc>
|
||||
<xloc>864</xloc>
|
||||
<yloc>128</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Insert / update (recruitment_campaign.subpoenas) 2</name>
|
||||
<name>Insert / update (recruitment_campaign.subpoenas) 3</name>
|
||||
<type>InsertUpdate</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
|
|
@ -787,6 +807,26 @@
|
|||
<rename>spring_autumn</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>count_not_delivery</name>
|
||||
<rename>count_not_delivery</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good</name>
|
||||
<rename>appear_date_is_good</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_delivery_percent</name>
|
||||
<rename>not_delivery_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good_percent</name>
|
||||
<rename>appear_date_is_good_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
|
|
@ -797,7 +837,7 @@
|
|||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>880</xloc>
|
||||
<xloc>864</xloc>
|
||||
<yloc>240</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
|
|
@ -815,7 +855,7 @@
|
|||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
|
|
@ -827,15 +867,16 @@
|
|||
rdi.id AS rdi_id,
|
||||
ssi.delivery_code AS d_code,
|
||||
ROW_NUMBER() OVER (PARTITION BY s.id ORDER BY sh.date_time DESC) AS rn -- добавляем строку для получения последнего статуса
|
||||
FROM public.subpoena s
|
||||
JOIN public.subpoena_history AS sh ON sh.subpoena_id = s.id
|
||||
JOIN public.subpoena_status AS ss ON ss.id = s.status_id
|
||||
JOIN public.subpoena_status AS ssh ON ssh.id = sh.status_id
|
||||
JOIN public.subpoena_reason AS sr ON sr.id = s.reason_id
|
||||
LEFT JOIN public.restriction_document AS rd ON rd.subpoena_id = s.id
|
||||
LEFT JOIN public.restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN public.subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
FROM subpoena s
|
||||
JOIN subpoena_history AS sh ON sh.subpoena_id = s.id
|
||||
JOIN subpoena_status AS ss ON ss.id = s.status_id
|
||||
JOIN subpoena_status AS ssh ON ssh.id = sh.status_id
|
||||
JOIN subpoena_reason AS sr ON sr.id = s.reason_id
|
||||
LEFT JOIN restriction_document AS rd ON rd.subpoena_id = s.id
|
||||
LEFT JOIN restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
WHERE sr.type = '3'
|
||||
and ssh.code not in ('3.14','3.7','3.72', '3.71')
|
||||
),
|
||||
-- фильтруем только последние статусы для каждой повестки
|
||||
last_status AS (
|
||||
|
|
@ -852,12 +893,12 @@ t1 AS (
|
|||
t2 AS (
|
||||
SELECT ROUND(AVG(EXTRACT(DAY FROM (history_date::timestamp - send_date::timestamp))), 1) AS average_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
|
|
@ -887,7 +928,7 @@ t8 AS ( -- количество повесток по которым введе
|
|||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code = '14'
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
|
|
@ -897,31 +938,45 @@ t10 AS (
|
|||
t11 AS (
|
||||
SELECT COUNT (DISTINCT rdi_id) AS count_restrictions
|
||||
FROM last_status
|
||||
)
|
||||
SELECT
|
||||
),
|
||||
t12 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_delivery --не вручена
|
||||
FROM last_status
|
||||
WHERE d_code is null
|
||||
),
|
||||
t13 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS appear_date_is_good
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3','3.12', '3.13', '3.15', '3.1')
|
||||
)
|
||||
SELECT
|
||||
t1.count_subpoena,
|
||||
t2.average_appeared,
|
||||
t3.count_appeared,
|
||||
t4.count_not_appeared,
|
||||
t5.count_not_ap_good_reason,
|
||||
t6.count_ap_not_required,
|
||||
t7.count_restrictions_applied,
|
||||
t8.count_introduced_measures,
|
||||
t9.count_paper,
|
||||
t4.count_not_appeared,
|
||||
t5.count_not_ap_good_reason,
|
||||
t6.count_ap_not_required,
|
||||
t7.count_restrictions_applied,
|
||||
t8.count_introduced_measures,
|
||||
t9.count_paper,
|
||||
t10.count_electron,
|
||||
t11.count_restrictions,
|
||||
ROUND(count_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(count_not_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(count_not_ap_good_reason * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(count_ap_not_required * 100.0 / NULLIF(count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(count_electron * 100.0 / NULLIF(count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(count_paper * 100.0 / NULLIF(count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(count_restrictions_applied * 100.0 / NULLIF(count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
t12.count_not_delivery,
|
||||
t13.appear_date_is_good,
|
||||
ROUND(count_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(count_not_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(count_not_ap_good_reason * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(count_ap_not_required * 100.0 / NULLIF(count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(count_electron * 100.0 / NULLIF(count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(count_paper * 100.0 / NULLIF(count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(count_restrictions_applied * 100.0 / NULLIF(count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
ROUND(count_introduced_measures * 100.0 / NULLIF(count_subpoena, 0), 2) AS introduced_measures_percent,
|
||||
ROUND(count_not_delivery * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_delivery_percent, --процент не врученных
|
||||
ROUND(appear_date_is_good * 100.0 / NULLIF(count_subpoena, 0), 2) AS appear_date_is_good_percent, --процент не врученных
|
||||
'00' AS recruitment_id,
|
||||
0 as rest,
|
||||
0 as rest,
|
||||
'Весна' as spring_autumn,
|
||||
1 AS org
|
||||
1 AS org
|
||||
FROM t1
|
||||
FULL OUTER JOIN t2 ON 1 = 1
|
||||
FULL OUTER JOIN t3 ON 1 = 1
|
||||
|
|
@ -932,7 +987,10 @@ FULL OUTER JOIN t7 ON 1 = 1
|
|||
FULL OUTER JOIN t8 ON 1 = 1
|
||||
FULL OUTER JOIN t9 ON 1 = 1
|
||||
FULL OUTER JOIN t10 ON 1 = 1
|
||||
FULL OUTER JOIN t11 ON 1 = 1;</sql>
|
||||
FULL OUTER JOIN t11 ON 1 = 1
|
||||
FULL OUTER JOIN t12 ON 1 = 1
|
||||
FULL OUTER JOIN t13 ON 1 = 1;
|
||||
</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -965,7 +1023,7 @@ FULL OUTER JOIN t11 ON 1 = 1;</sql>
|
|||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
|
|
@ -977,15 +1035,16 @@ FULL OUTER JOIN t11 ON 1 = 1;</sql>
|
|||
rdi.id AS rdi_id,
|
||||
ssi.delivery_code AS d_code,
|
||||
ROW_NUMBER() OVER (PARTITION BY s.id ORDER BY sh.date_time DESC) AS rn -- добавляем строку для получения последнего статуса
|
||||
FROM public.subpoena s
|
||||
JOIN public.subpoena_history AS sh ON sh.subpoena_id = s.id
|
||||
JOIN public.subpoena_status AS ss ON ss.id = s.status_id
|
||||
JOIN public.subpoena_status AS ssh ON ssh.id = sh.status_id
|
||||
JOIN public.subpoena_reason AS sr ON sr.id = s.reason_id
|
||||
LEFT JOIN public.restriction_document AS rd ON rd.subpoena_id = s.id
|
||||
LEFT JOIN public.restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN public.subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
WHERE sr.type = '3' -- код про призывную комиссию
|
||||
FROM subpoena s
|
||||
JOIN subpoena_history AS sh ON sh.subpoena_id = s.id
|
||||
JOIN subpoena_status AS ss ON ss.id = s.status_id
|
||||
JOIN subpoena_status AS ssh ON ssh.id = sh.status_id
|
||||
JOIN subpoena_reason AS sr ON sr.id = s.reason_id
|
||||
LEFT JOIN restriction_document AS rd ON rd.subpoena_id = s.id
|
||||
LEFT JOIN restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
WHERE sr.type = '3'
|
||||
and ssh.code not in ('3.14','3.7','3.72', '3.71')
|
||||
),
|
||||
-- фильтруем только последние статусы для каждой повестки
|
||||
last_status AS (
|
||||
|
|
@ -1002,12 +1061,12 @@ t1 AS (
|
|||
t2 AS (
|
||||
SELECT ROUND(AVG(EXTRACT(DAY FROM (history_date::timestamp - send_date::timestamp))), 1) AS average_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
|
|
@ -1037,7 +1096,7 @@ t8 AS ( -- количество повесток по которым введе
|
|||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code = '14'
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
|
|
@ -1047,31 +1106,45 @@ t10 AS (
|
|||
t11 AS (
|
||||
SELECT COUNT (DISTINCT rdi_id) AS count_restrictions
|
||||
FROM last_status
|
||||
)
|
||||
SELECT
|
||||
),
|
||||
t12 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_delivery --не вручена
|
||||
FROM last_status
|
||||
WHERE d_code is null
|
||||
),
|
||||
t13 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS appear_date_is_good
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3','3.12', '3.13', '3.15', '3.1')
|
||||
)
|
||||
SELECT
|
||||
t1.count_subpoena,
|
||||
t2.average_appeared,
|
||||
t3.count_appeared,
|
||||
t4.count_not_appeared,
|
||||
t5.count_not_ap_good_reason,
|
||||
t6.count_ap_not_required,
|
||||
t7.count_restrictions_applied,
|
||||
t8.count_introduced_measures,
|
||||
t9.count_paper,
|
||||
t4.count_not_appeared,
|
||||
t5.count_not_ap_good_reason,
|
||||
t6.count_ap_not_required,
|
||||
t7.count_restrictions_applied,
|
||||
t8.count_introduced_measures,
|
||||
t9.count_paper,
|
||||
t10.count_electron,
|
||||
t11.count_restrictions,
|
||||
ROUND(count_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(count_not_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(count_not_ap_good_reason * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(count_ap_not_required * 100.0 / NULLIF(count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(count_electron * 100.0 / NULLIF(count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(count_paper * 100.0 / NULLIF(count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(count_restrictions_applied * 100.0 / NULLIF(count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
t12.count_not_delivery,
|
||||
t13.appear_date_is_good,
|
||||
ROUND(count_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(count_not_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(count_not_ap_good_reason * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(count_ap_not_required * 100.0 / NULLIF(count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(count_electron * 100.0 / NULLIF(count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(count_paper * 100.0 / NULLIF(count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(count_restrictions_applied * 100.0 / NULLIF(count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
ROUND(count_introduced_measures * 100.0 / NULLIF(count_subpoena, 0), 2) AS introduced_measures_percent,
|
||||
ROUND(count_not_delivery * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_delivery_percent, --процент не врученных
|
||||
ROUND(appear_date_is_good * 100.0 / NULLIF(count_subpoena, 0), 2) AS appear_date_is_good_percent, --процент не врученных
|
||||
'00' AS recruitment_id,
|
||||
0 as rest,
|
||||
0 as rest,
|
||||
'Осень' as spring_autumn,
|
||||
1 AS org
|
||||
1 AS org
|
||||
FROM t1
|
||||
FULL OUTER JOIN t2 ON 1 = 1
|
||||
FULL OUTER JOIN t3 ON 1 = 1
|
||||
|
|
@ -1082,7 +1155,10 @@ FULL OUTER JOIN t7 ON 1 = 1
|
|||
FULL OUTER JOIN t8 ON 1 = 1
|
||||
FULL OUTER JOIN t9 ON 1 = 1
|
||||
FULL OUTER JOIN t10 ON 1 = 1
|
||||
FULL OUTER JOIN t11 ON 1 = 1;</sql>
|
||||
FULL OUTER JOIN t11 ON 1 = 1
|
||||
FULL OUTER JOIN t12 ON 1 = 1
|
||||
FULL OUTER JOIN t13 ON 1 = 1;
|
||||
</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -885,57 +885,84 @@
|
|||
SELECT COUNT(*) AS total
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' and r.current_recruitment_id is not null and r.target_recruitment_id is not null
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
),
|
||||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
|
||||
-- Высшее образование (российское или иностранное)
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
)
|
||||
) AS has_higher,
|
||||
|
||||
-- Среднее профессиональное образование (если нет высшего)
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
)
|
||||
) AS has_average_prof,
|
||||
|
||||
-- Общее образование (если нет высшего и среднего)
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(ri.info->'svedRObr'->>'prOtsRObr' = '1' OR ri.info->'svedInObr'->>'prOtsInObr' = '1') AS has_no_data
|
||||
(
|
||||
NOT (
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
)
|
||||
)
|
||||
) AND (
|
||||
ri.info->'svedRObr'->>'prOtsRObr' = '1'
|
||||
OR ri.info->'svedInObr'->>'prOtsInObr' = '1'
|
||||
)
|
||||
) AS has_no_data
|
||||
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' and r.current_recruitment_id is not null and r.target_recruitment_id is not null
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
|
|
@ -946,13 +973,13 @@ final_counts AS (
|
|||
FROM education_status
|
||||
)
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
'ALL' AS gender,
|
||||
'00' AS recruitment_id,
|
||||
higher,
|
||||
average_prof,
|
||||
only_general,
|
||||
count_nodata,
|
||||
total_count.total,
|
||||
total_count.total,
|
||||
ROUND(higher * 100.0 / NULLIF(total_count.total, 0), 2) AS higher_percentage,
|
||||
ROUND(average_prof * 100.0 / NULLIF(total_count.total, 0), 2) AS average_prof_percentage,
|
||||
ROUND(only_general * 100.0 / NULLIF(total_count.total, 0), 2) AS only_general_percentage,
|
||||
|
|
@ -993,55 +1020,86 @@ FROM final_counts, total_count;</sql>
|
|||
SELECT COUNT(*) AS total
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' AND r.gender = 'FEMALE' and r.current_recruitment_id is not null and r.target_recruitment_id is not null
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
AND r.gender = 'FEMALE'
|
||||
),
|
||||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
-- Высшее образование: если есть высшее образование в российском или иностранном блоке
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
)
|
||||
) AS has_higher,
|
||||
|
||||
-- Среднее профессиональное образование: если есть код 10, но нет высшего
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' = '10'
|
||||
-- Среднее профессиональное образование (если нет высшего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
)
|
||||
) AS has_average_prof,
|
||||
|
||||
-- Общее образование: если нет высшего и среднего, но есть код 7 или 9
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
-- Общее образование (если нет высшего и среднего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
-- Нет данных об образовании
|
||||
(ri.info->'svedRObr'->>'prOtsRObr' = '1' OR ri.info->'svedInObr'->>'prOtsInObr' = '1') AS has_no_data
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
NOT (
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
)
|
||||
)
|
||||
) AND (
|
||||
ri.info->'svedRObr'->>'prOtsRObr' = '1'
|
||||
OR ri.info->'svedInObr'->>'prOtsInObr' = '1'
|
||||
)
|
||||
) AS has_no_data
|
||||
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' AND r.gender = 'FEMALE' and r.current_recruitment_id is not null and r.target_recruitment_id is not null
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
AND r.gender = 'FEMALE'
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
|
|
@ -1052,13 +1110,13 @@ final_counts AS (
|
|||
FROM education_status
|
||||
)
|
||||
SELECT
|
||||
'W' as gender,
|
||||
'00' as recruitment_id,
|
||||
'W' AS gender,
|
||||
'00' AS recruitment_id,
|
||||
higher,
|
||||
average_prof,
|
||||
only_general,
|
||||
count_nodata,
|
||||
total_count.total,
|
||||
total_count.total,
|
||||
ROUND(higher * 100.0 / NULLIF(total_count.total, 0), 2) AS higher_percentage,
|
||||
ROUND(average_prof * 100.0 / NULLIF(total_count.total, 0), 2) AS average_prof_percentage,
|
||||
ROUND(only_general * 100.0 / NULLIF(total_count.total, 0), 2) AS only_general_percentage,
|
||||
|
|
@ -1099,55 +1157,86 @@ FROM final_counts, total_count;</sql>
|
|||
SELECT COUNT(*) AS total
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' AND r.gender = 'MALE' and r.current_recruitment_id is not null and r.target_recruitment_id is not null
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
AND r.gender = 'MALE'
|
||||
),
|
||||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
-- Высшее образование: если есть высшее образование в российском или иностранном блоке
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
)
|
||||
) AS has_higher,
|
||||
|
||||
-- Среднее профессиональное образование: если есть код 10, но нет высшего
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' = '10'
|
||||
-- Среднее профессиональное образование (если нет высшего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
)
|
||||
) AS has_average_prof,
|
||||
|
||||
-- Общее образование: если нет высшего и среднего, но есть код 7 или 9
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array' -- проверка на массив
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
-- Общее образование (если нет высшего и среднего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
-- Нет данных об образовании
|
||||
(ri.info->'svedRObr'->>'prOtsRObr' = '1' OR ri.info->'svedInObr'->>'prOtsInObr' = '1') AS has_no_data
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
NOT (
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
)
|
||||
)
|
||||
) AND (
|
||||
ri.info->'svedRObr'->>'prOtsRObr' = '1'
|
||||
OR ri.info->'svedInObr'->>'prOtsInObr' = '1'
|
||||
)
|
||||
) AS has_no_data
|
||||
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' AND r.gender = 'MALE' and r.current_recruitment_id is not null and r.target_recruitment_id is not null
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
AND r.gender = 'MALE'
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
|
|
@ -1158,13 +1247,13 @@ final_counts AS (
|
|||
FROM education_status
|
||||
)
|
||||
SELECT
|
||||
'M' as gender,
|
||||
'00' as recruitment_id,
|
||||
'M' AS gender,
|
||||
'00' AS recruitment_id,
|
||||
higher,
|
||||
average_prof,
|
||||
only_general,
|
||||
count_nodata,
|
||||
total_count.total,
|
||||
total_count.total,
|
||||
ROUND(higher * 100.0 / NULLIF(total_count.total, 0), 2) AS higher_percentage,
|
||||
ROUND(average_prof * 100.0 / NULLIF(total_count.total, 0), 2) AS average_prof_percentage,
|
||||
ROUND(only_general * 100.0 / NULLIF(total_count.total, 0), 2) AS only_general_percentage,
|
||||
|
|
|
|||
|
|
@ -683,29 +683,29 @@
|
|||
</partitioning>
|
||||
<connection>postgres.decision-document-service</connection>
|
||||
<sql>SELECT
|
||||
COUNT(*) AS removed_registry,
|
||||
COUNT(CASE WHEN d.extra_info ->> 'cause' = 'ageLimit' THEN 1 END) AS age_limit, -- Количество по причине предельный возраст
|
||||
COUNT(CASE WHEN d.extra_info ->> 'cause' = 'notAlive' THEN 1 END) AS death, -- Количество по причине смерть
|
||||
'0' AS deprivation_citizenship,
|
||||
'0' AS travel_abroad,
|
||||
'0' AS living_abroad,
|
||||
'0' AS other,
|
||||
'0' AS deprivation_citizen_percents,
|
||||
ROUND(COUNT(CASE WHEN d.extra_info ->> 'cause' = 'ageLimit' THEN 1 END) * 100.0 / NULLIF(COUNT(*), 0), 2) AS age_limit_percent,
|
||||
ROUND(COUNT(CASE WHEN d.extra_info ->> 'cause' = 'notAlive' THEN 1 END) * 100.0 / NULLIF(COUNT(*), 0), 2) AS death_percent,
|
||||
'0' AS travel_abroad_percent,
|
||||
'0' AS living_abroad_percent,
|
||||
'0' AS other_percent,
|
||||
'00' AS recruitment_id
|
||||
COUNT(*) AS removed_registry,
|
||||
COUNT(CASE WHEN d.extra_info ->> 'cause' = 'ageLimit' THEN 1 END) AS age_limit, -- Количество по причине предельный возраст
|
||||
COUNT(CASE WHEN d.extra_info ->> 'cause' = 'notAlive' THEN 1 END) AS death, -- Количество по причине смерть
|
||||
'0' AS deprivation_citizenship,
|
||||
'0' AS travel_abroad,
|
||||
'0' AS living_abroad,
|
||||
COUNT(CASE WHEN (d.extra_info ->> 'cause' IS NULL OR d.extra_info ->> 'cause' NOT IN ('ageLimit', 'notAlive')) THEN 1 END) AS other, -- Количество по другим причинам
|
||||
'0' AS deprivation_citizen_percents,
|
||||
ROUND(COUNT(CASE WHEN d.extra_info ->> 'cause' = 'ageLimit' THEN 1 END) * 100.0 / NULLIF(COUNT(*), 0), 2) AS age_limit_percent, -- Процент по причине предельный возраст
|
||||
ROUND(COUNT(CASE WHEN d.extra_info ->> 'cause' = 'notAlive' THEN 1 END) * 100.0 / NULLIF(COUNT(*), 0), 2) AS death_percent, -- Процент по причине смерть
|
||||
'0' AS travel_abroad_percent,
|
||||
'0' AS living_abroad_percent,
|
||||
ROUND(COUNT(CASE WHEN (d.extra_info ->> 'cause' IS NULL OR d.extra_info ->> 'cause' NOT IN ('ageLimit', 'notAlive')) THEN 1 END) * 100.0 / NULLIF(COUNT(*), 0), 2) AS other_percent, -- Процент по другим причинам
|
||||
'00' AS recruitment_id
|
||||
FROM public.recruit AS r
|
||||
JOIN public.decision AS d
|
||||
ON d.recruit_id = r.id
|
||||
ON d.recruit_id = r.id
|
||||
JOIN public.decision_type AS dt
|
||||
ON dt.id = d.type_id
|
||||
ON dt.id = d.type_id
|
||||
WHERE r.system_pgs_status = '1.3'
|
||||
AND r.current_recruitment IS NOT NULL
|
||||
AND r.target_recruitment IS NOT NULL
|
||||
AND dt.code = '9'</sql>
|
||||
AND r.current_recruitment IS NOT NULL
|
||||
AND r.target_recruitment IS NOT NULL
|
||||
AND dt.code IN ('9', '10');</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -563,7 +563,7 @@
|
|||
</hop>
|
||||
<hop>
|
||||
<from>Table input (subpoena) РФ/не рег</from>
|
||||
<to>Insert / update (total_registered.subpoenas) 2</to>
|
||||
<to>Insert / update (total_registered.subpoenas) 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
|
|
@ -696,6 +696,26 @@
|
|||
<rename>introduced_measures_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>count_not_delivery</name>
|
||||
<rename>count_not_delivery</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good</name>
|
||||
<rename>appear_date_is_good</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_delivery_percent</name>
|
||||
<rename>not_delivery_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good_percent</name>
|
||||
<rename>appear_date_is_good_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
|
|
@ -712,7 +732,7 @@
|
|||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Insert / update (total_registered.subpoenas) 2</name>
|
||||
<name>Insert / update (total_registered.subpoenas) 3</name>
|
||||
<type>InsertUpdate</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
|
|
@ -840,6 +860,26 @@
|
|||
<rename>introduced_measures_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>count_not_delivery</name>
|
||||
<rename>count_not_delivery</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good</name>
|
||||
<rename>appear_date_is_good</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_delivery_percent</name>
|
||||
<rename>not_delivery_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good_percent</name>
|
||||
<rename>appear_date_is_good_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
|
|
@ -868,7 +908,7 @@
|
|||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
|
|
@ -889,6 +929,7 @@
|
|||
LEFT JOIN restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
WHERE sr.type = '1'
|
||||
and ssh.code not in ('3.14','3.7','3.72', '3.71')
|
||||
),
|
||||
-- фильтруем только последние статусы для каждой повестки
|
||||
last_status AS (
|
||||
|
|
@ -905,12 +946,12 @@ t1 AS (
|
|||
t2 AS (
|
||||
SELECT ROUND(AVG(EXTRACT(DAY FROM (history_date::timestamp - send_date::timestamp))), 1) AS average_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
|
|
@ -940,7 +981,7 @@ t8 AS ( -- количество повесток по которым введе
|
|||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code = '14'
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
|
|
@ -950,29 +991,43 @@ t10 AS (
|
|||
t11 AS (
|
||||
SELECT COUNT (DISTINCT rdi_id) AS count_restrictions
|
||||
FROM last_status
|
||||
)
|
||||
SELECT
|
||||
),
|
||||
t12 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_delivery --не вручена
|
||||
FROM last_status
|
||||
WHERE d_code is null
|
||||
),
|
||||
t13 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS appear_date_is_good
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3','3.12', '3.13', '3.15', '3.1')
|
||||
)
|
||||
SELECT
|
||||
t1.count_subpoena,
|
||||
t2.average_appeared,
|
||||
t3.count_appeared,
|
||||
t4.count_not_appeared,
|
||||
t5.count_not_ap_good_reason,
|
||||
t6.count_ap_not_required,
|
||||
t7.count_restrictions_applied,
|
||||
t8.count_introduced_measures,
|
||||
t9.count_paper,
|
||||
t4.count_not_appeared,
|
||||
t5.count_not_ap_good_reason,
|
||||
t6.count_ap_not_required,
|
||||
t7.count_restrictions_applied,
|
||||
t8.count_introduced_measures,
|
||||
t9.count_paper,
|
||||
t10.count_electron,
|
||||
t11.count_restrictions,
|
||||
ROUND(count_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(count_not_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(count_not_ap_good_reason * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(count_ap_not_required * 100.0 / NULLIF(count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(count_electron * 100.0 / NULLIF(count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(count_paper * 100.0 / NULLIF(count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(count_restrictions_applied * 100.0 / NULLIF(count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
t12.count_not_delivery,
|
||||
t13.appear_date_is_good,
|
||||
ROUND(count_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(count_not_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(count_not_ap_good_reason * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(count_ap_not_required * 100.0 / NULLIF(count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(count_electron * 100.0 / NULLIF(count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(count_paper * 100.0 / NULLIF(count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(count_restrictions_applied * 100.0 / NULLIF(count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
ROUND(count_introduced_measures * 100.0 / NULLIF(count_subpoena, 0), 2) AS introduced_measures_percent,
|
||||
'00' AS recruitment_id,
|
||||
1 AS org,
|
||||
ROUND(count_not_delivery * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_delivery_percent, --процент не врученных
|
||||
ROUND(appear_date_is_good * 100.0 / NULLIF(count_subpoena, 0), 2) AS appear_date_is_good_percent, --процент не врученных
|
||||
'00' AS recruitment_id,
|
||||
1 AS org,
|
||||
0 AS mil_reg
|
||||
FROM t1
|
||||
FULL OUTER JOIN t2 ON 1 = 1
|
||||
|
|
@ -984,7 +1039,9 @@ FULL OUTER JOIN t7 ON 1 = 1
|
|||
FULL OUTER JOIN t8 ON 1 = 1
|
||||
FULL OUTER JOIN t9 ON 1 = 1
|
||||
FULL OUTER JOIN t10 ON 1 = 1
|
||||
FULL OUTER JOIN t11 ON 1 = 1;</sql>
|
||||
FULL OUTER JOIN t11 ON 1 = 1
|
||||
FULL OUTER JOIN t12 ON 1 = 1
|
||||
FULL OUTER JOIN t13 ON 1 = 1;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1017,7 +1074,7 @@ FULL OUTER JOIN t11 ON 1 = 1;</sql>
|
|||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
|
|
@ -1038,6 +1095,7 @@ FULL OUTER JOIN t11 ON 1 = 1;</sql>
|
|||
LEFT JOIN restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
WHERE sr.type != '1'
|
||||
and ssh.code not in ('3.14','3.7','3.72', '3.71')
|
||||
),
|
||||
-- фильтруем только последние статусы для каждой повестки
|
||||
last_status AS (
|
||||
|
|
@ -1054,12 +1112,12 @@ t1 AS (
|
|||
t2 AS (
|
||||
SELECT ROUND(AVG(EXTRACT(DAY FROM (history_date::timestamp - send_date::timestamp))), 1) AS average_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
|
|
@ -1089,7 +1147,7 @@ t8 AS ( -- количество повесток по которым введе
|
|||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code = '14'
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
|
|
@ -1099,29 +1157,43 @@ t10 AS (
|
|||
t11 AS (
|
||||
SELECT COUNT (DISTINCT rdi_id) AS count_restrictions
|
||||
FROM last_status
|
||||
)
|
||||
SELECT
|
||||
),
|
||||
t12 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_delivery --не вручена
|
||||
FROM last_status
|
||||
WHERE d_code is null
|
||||
),
|
||||
t13 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS appear_date_is_good
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3','3.12', '3.13', '3.15', '3.1')
|
||||
)
|
||||
SELECT
|
||||
t1.count_subpoena,
|
||||
t2.average_appeared,
|
||||
t3.count_appeared,
|
||||
t4.count_not_appeared,
|
||||
t5.count_not_ap_good_reason,
|
||||
t6.count_ap_not_required,
|
||||
t7.count_restrictions_applied,
|
||||
t8.count_introduced_measures,
|
||||
t9.count_paper,
|
||||
t4.count_not_appeared,
|
||||
t5.count_not_ap_good_reason,
|
||||
t6.count_ap_not_required,
|
||||
t7.count_restrictions_applied,
|
||||
t8.count_introduced_measures,
|
||||
t9.count_paper,
|
||||
t10.count_electron,
|
||||
t11.count_restrictions,
|
||||
ROUND(count_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(count_not_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(count_not_ap_good_reason * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(count_ap_not_required * 100.0 / NULLIF(count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(count_electron * 100.0 / NULLIF(count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(count_paper * 100.0 / NULLIF(count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(count_restrictions_applied * 100.0 / NULLIF(count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
t12.count_not_delivery,
|
||||
t13.appear_date_is_good,
|
||||
ROUND(count_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(count_not_appeared * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(count_not_ap_good_reason * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(count_ap_not_required * 100.0 / NULLIF(count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(count_electron * 100.0 / NULLIF(count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(count_paper * 100.0 / NULLIF(count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(count_restrictions_applied * 100.0 / NULLIF(count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
ROUND(count_introduced_measures * 100.0 / NULLIF(count_subpoena, 0), 2) AS introduced_measures_percent,
|
||||
'00' AS recruitment_id,
|
||||
1 AS org,
|
||||
ROUND(count_not_delivery * 100.0 / NULLIF(count_subpoena, 0), 2) AS not_delivery_percent, --процент не врученных
|
||||
ROUND(appear_date_is_good * 100.0 / NULLIF(count_subpoena, 0), 2) AS appear_date_is_good_percent, --процент не врученных
|
||||
'00' AS recruitment_id,
|
||||
1 AS org,
|
||||
1 AS mil_reg
|
||||
FROM t1
|
||||
FULL OUTER JOIN t2 ON 1 = 1
|
||||
|
|
@ -1133,7 +1205,9 @@ FULL OUTER JOIN t7 ON 1 = 1
|
|||
FULL OUTER JOIN t8 ON 1 = 1
|
||||
FULL OUTER JOIN t9 ON 1 = 1
|
||||
FULL OUTER JOIN t10 ON 1 = 1
|
||||
FULL OUTER JOIN t11 ON 1 = 1;</sql>
|
||||
FULL OUTER JOIN t11 ON 1 = 1
|
||||
FULL OUTER JOIN t12 ON 1 = 1
|
||||
FULL OUTER JOIN t13 ON 1 = 1;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -565,12 +565,12 @@
|
|||
</hop>
|
||||
<hop>
|
||||
<from>Select values 4 3</from>
|
||||
<to>Insert / update (recruitment_campaign.subpoenas)</to>
|
||||
<to>Insert / update (recruitment_campaign.subpoenas) 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 4 3 2</from>
|
||||
<to>Insert / update (recruitment_campaign.subpoenas) 2</to>
|
||||
<to>Insert / update (recruitment_campaign.subpoenas) 3 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
|
|
@ -677,7 +677,7 @@
|
|||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Insert / update (recruitment_campaign.subpoenas)</name>
|
||||
<name>Insert / update (recruitment_campaign.subpoenas) 3</name>
|
||||
<type>InsertUpdate</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
|
|
@ -779,6 +779,26 @@
|
|||
<rename>spring_autumn</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>count_not_delivery</name>
|
||||
<rename>count_not_delivery</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good</name>
|
||||
<rename>appear_date_is_good</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_delivery_percent</name>
|
||||
<rename>not_delivery_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good_percent</name>
|
||||
<rename>appear_date_is_good_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
|
|
@ -795,7 +815,7 @@
|
|||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Insert / update (recruitment_campaign.subpoenas) 2</name>
|
||||
<name>Insert / update (recruitment_campaign.subpoenas) 3 2</name>
|
||||
<type>InsertUpdate</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
|
|
@ -897,6 +917,26 @@
|
|||
<rename>spring_autumn</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>count_not_delivery</name>
|
||||
<rename>count_not_delivery</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good</name>
|
||||
<rename>appear_date_is_good</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_delivery_percent</name>
|
||||
<rename>not_delivery_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>appear_date_is_good_percent</name>
|
||||
<rename>appear_date_is_good_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
|
|
@ -1049,7 +1089,7 @@
|
|||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
|
|
@ -1061,21 +1101,22 @@
|
|||
rdi.id AS rdi_id,
|
||||
ssi.delivery_code AS d_code,
|
||||
ROW_NUMBER() OVER (PARTITION BY s.id ORDER BY sh.date_time DESC) AS rn
|
||||
FROM public.subpoena s
|
||||
JOIN public.subpoena_history AS sh ON sh.subpoena_id = s.id
|
||||
JOIN public.subpoena_status AS ss ON ss.id = s.status_id
|
||||
JOIN public.subpoena_status AS ssh ON ssh.id = sh.status_id
|
||||
JOIN public.subpoena_reason AS sr ON sr.id = s.reason_id
|
||||
LEFT JOIN public.restriction_document AS rd ON rd.subpoena_id = s.id
|
||||
LEFT JOIN public.restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN public.subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
FROM subpoena s
|
||||
JOIN subpoena_history AS sh ON sh.subpoena_id = s.id
|
||||
JOIN subpoena_status AS ss ON ss.id = s.status_id
|
||||
JOIN subpoena_status AS ssh ON ssh.id = sh.status_id
|
||||
JOIN subpoena_reason AS sr ON sr.id = s.reason_id
|
||||
LEFT JOIN restriction_document AS rd ON rd.subpoena_id = s.id
|
||||
LEFT JOIN restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
WHERE sr.type = '3'
|
||||
AND ssh.code NOT IN ('3.14','3.7','3.72', '3.71')
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
COALESCE('${VK_ARRAY}', '') = ''
|
||||
OR s.department_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')),
|
||||
','
|
||||
)::uuid[]
|
||||
)
|
||||
)
|
||||
|
|
@ -1093,12 +1134,12 @@ t1 AS (
|
|||
t2 AS (
|
||||
SELECT ROUND(AVG(EXTRACT(DAY FROM (history_date::timestamp - send_date::timestamp))), 1) AS average_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
|
|
@ -1128,7 +1169,7 @@ t8 AS (
|
|||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code = '14'
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
|
|
@ -1136,46 +1177,78 @@ t10 AS (
|
|||
WHERE d_code = '7'
|
||||
),
|
||||
t11 AS (
|
||||
SELECT COUNT(DISTINCT rdi_id) AS count_restrictions
|
||||
SELECT COUNT (DISTINCT rdi_id) AS count_restrictions
|
||||
FROM last_status
|
||||
),
|
||||
t12 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_delivery
|
||||
FROM last_status
|
||||
WHERE d_code IS NULL
|
||||
),
|
||||
t13 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS appear_date_is_good
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3','3.12', '3.13', '3.15', '3.1')
|
||||
)
|
||||
|
||||
SELECT
|
||||
SELECT
|
||||
COALESCE(t1.count_subpoena, 0) AS count_subpoena,
|
||||
COALESCE(t2.average_appeared, 0) AS average_appeared,
|
||||
COALESCE(t3.count_appeared, 0) AS count_appeared,
|
||||
COALESCE(t4.count_not_appeared, 0) AS count_not_appeared,
|
||||
COALESCE(t5.count_not_ap_good_reason, 0) AS count_not_ap_good_reason,
|
||||
COALESCE(t6.count_ap_not_required, 0) AS count_ap_not_required,
|
||||
COALESCE(t7.count_restrictions_applied, 0) AS count_restrictions_applied,
|
||||
COALESCE(t8.count_introduced_measures, 0) AS count_introduced_measures,
|
||||
COALESCE(t9.count_paper, 0) AS count_paper,
|
||||
COALESCE(t4.count_not_appeared, 0) AS count_not_appeared,
|
||||
COALESCE(t5.count_not_ap_good_reason, 0) AS count_not_ap_good_reason,
|
||||
COALESCE(t6.count_ap_not_required, 0) AS count_ap_not_required,
|
||||
COALESCE(t7.count_restrictions_applied, 0) AS count_restrictions_applied,
|
||||
COALESCE(t8.count_introduced_measures, 0) AS count_introduced_measures,
|
||||
COALESCE(t9.count_paper, 0) AS count_paper,
|
||||
COALESCE(t10.count_electron, 0) AS count_electron,
|
||||
COALESCE(t11.count_restrictions, 0) AS count_restrictions,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t3.count_appeared, 0) * 100.0 / t1.count_subpoena, 2) END AS appeared_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t4.count_not_appeared, 0) * 100.0 / t1.count_subpoena, 2) END AS not_appeared_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t5.count_not_ap_good_reason, 0) * 100.0 / t1.count_subpoena, 2) END AS not_ap_good_reason_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t6.count_ap_not_required, 0) * 100.0 / t1.count_subpoena, 2) END AS ap_not_required_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t10.count_electron, 0) * 100.0 / t1.count_subpoena, 2) END AS electron_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t9.count_paper, 0) * 100.0 / t1.count_subpoena, 2) END AS paper_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t7.count_restrictions_applied, 0) * 100.0 / t1.count_subpoena, 2) END AS restrictions_applied_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t8.count_introduced_measures, 0) * 100.0 / t1.count_subpoena, 2) END AS introduced_measures_percent,
|
||||
COALESCE(t12.count_not_delivery, 0) AS count_not_delivery,
|
||||
COALESCE(t13.appear_date_is_good, 0) AS appear_date_is_good,
|
||||
ROUND(COALESCE(t3.count_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(COALESCE(t4.count_not_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(COALESCE(t5.count_not_ap_good_reason, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(COALESCE(t6.count_ap_not_required, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(COALESCE(t10.count_electron, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(COALESCE(t9.count_paper, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(COALESCE(t7.count_restrictions_applied, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
ROUND(COALESCE(t8.count_introduced_measures, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS introduced_measures_percent,
|
||||
ROUND(COALESCE(t12.count_not_delivery, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_delivery_percent,
|
||||
ROUND(COALESCE(t13.appear_date_is_good, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS appear_date_is_good_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
1 AS org,
|
||||
0 AS rest,
|
||||
'Весна' AS spring_autumn,
|
||||
1 AS org
|
||||
'Осень' AS spring_autumn
|
||||
FROM t1
|
||||
FULL OUTER JOIN t2 ON 1 = 1
|
||||
FULL OUTER JOIN t3 ON 1 = 1
|
||||
FULL OUTER JOIN t4 ON 1 = 1
|
||||
FULL OUTER JOIN t5 ON 1 = 1
|
||||
FULL OUTER JOIN t6 ON 1 = 1
|
||||
FULL OUTER JOIN t7 ON 1 = 1
|
||||
FULL OUTER JOIN t8 ON 1 = 1
|
||||
FULL OUTER JOIN t9 ON 1 = 1
|
||||
FULL OUTER JOIN t10 ON 1 = 1
|
||||
FULL OUTER JOIN t11 ON 1 = 1
|
||||
WHERE NOT (('${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '') AND (COALESCE(t1.count_subpoena, 0) > 0 OR COALESCE(t2.average_appeared, 0) > 0 OR COALESCE(t3.count_appeared, 0) > 0 OR COALESCE(t4.count_not_appeared, 0) > 0 OR COALESCE(t5.count_not_ap_good_reason, 0) > 0 OR COALESCE(t6.count_ap_not_required, 0) > 0 OR COALESCE(t7.count_restrictions_applied, 0) > 0 OR COALESCE(t8.count_introduced_measures, 0) > 0 OR COALESCE(t9.count_paper, 0) > 0 OR COALESCE(t10.count_electron, 0) > 0 OR COALESCE(t11.count_restrictions, 0) > 0));</sql>
|
||||
FULL OUTER JOIN t2 ON true
|
||||
FULL OUTER JOIN t3 ON true
|
||||
FULL OUTER JOIN t4 ON true
|
||||
FULL OUTER JOIN t5 ON true
|
||||
FULL OUTER JOIN t6 ON true
|
||||
FULL OUTER JOIN t7 ON true
|
||||
FULL OUTER JOIN t8 ON true
|
||||
FULL OUTER JOIN t9 ON true
|
||||
FULL OUTER JOIN t10 ON true
|
||||
FULL OUTER JOIN t11 ON true
|
||||
FULL OUTER JOIN t12 ON true
|
||||
FULL OUTER JOIN t13 ON true
|
||||
WHERE NOT (
|
||||
COALESCE('${VK_ARRAY}', '') = ''
|
||||
AND (
|
||||
COALESCE(t1.count_subpoena, 0) > 0
|
||||
OR COALESCE(t2.average_appeared, 0) > 0
|
||||
OR COALESCE(t3.count_appeared, 0) > 0
|
||||
OR COALESCE(t4.count_not_appeared, 0) > 0
|
||||
OR COALESCE(t5.count_not_ap_good_reason, 0) > 0
|
||||
OR COALESCE(t6.count_ap_not_required, 0) > 0
|
||||
OR COALESCE(t7.count_restrictions_applied, 0) > 0
|
||||
OR COALESCE(t8.count_introduced_measures, 0) > 0
|
||||
OR COALESCE(t9.count_paper, 0) > 0
|
||||
OR COALESCE(t10.count_electron, 0) > 0
|
||||
OR COALESCE(t11.count_restrictions, 0) > 0
|
||||
OR COALESCE(t12.count_not_delivery, 0) > 0
|
||||
OR COALESCE(t13.appear_date_is_good, 0) > 0
|
||||
)
|
||||
);</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1208,7 +1281,7 @@ WHERE NOT (('${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '') AND (COALESCE(t1.count_
|
|||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
|
|
@ -1220,21 +1293,22 @@ WHERE NOT (('${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '') AND (COALESCE(t1.count_
|
|||
rdi.id AS rdi_id,
|
||||
ssi.delivery_code AS d_code,
|
||||
ROW_NUMBER() OVER (PARTITION BY s.id ORDER BY sh.date_time DESC) AS rn
|
||||
FROM public.subpoena s
|
||||
JOIN public.subpoena_history AS sh ON sh.subpoena_id = s.id
|
||||
JOIN public.subpoena_status AS ss ON ss.id = s.status_id
|
||||
JOIN public.subpoena_status AS ssh ON ssh.id = sh.status_id
|
||||
JOIN public.subpoena_reason AS sr ON sr.id = s.reason_id
|
||||
LEFT JOIN public.restriction_document AS rd ON rd.subpoena_id = s.id
|
||||
LEFT JOIN public.restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN public.subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
FROM subpoena s
|
||||
JOIN subpoena_history AS sh ON sh.subpoena_id = s.id
|
||||
JOIN subpoena_status AS ss ON ss.id = s.status_id
|
||||
JOIN subpoena_status AS ssh ON ssh.id = sh.status_id
|
||||
JOIN subpoena_reason AS sr ON sr.id = s.reason_id
|
||||
LEFT JOIN restriction_document AS rd ON rd.subpoena_id = s.id
|
||||
LEFT JOIN restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
WHERE sr.type = '3'
|
||||
AND ssh.code NOT IN ('3.14','3.7','3.72', '3.71')
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
COALESCE('${VK_ARRAY}', '') = ''
|
||||
OR s.department_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')),
|
||||
','
|
||||
)::uuid[]
|
||||
)
|
||||
)
|
||||
|
|
@ -1252,12 +1326,12 @@ t1 AS (
|
|||
t2 AS (
|
||||
SELECT ROUND(AVG(EXTRACT(DAY FROM (history_date::timestamp - send_date::timestamp))), 1) AS average_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
|
|
@ -1287,7 +1361,7 @@ t8 AS (
|
|||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code = '14'
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
|
|
@ -1295,46 +1369,78 @@ t10 AS (
|
|||
WHERE d_code = '7'
|
||||
),
|
||||
t11 AS (
|
||||
SELECT COUNT(DISTINCT rdi_id) AS count_restrictions
|
||||
SELECT COUNT (DISTINCT rdi_id) AS count_restrictions
|
||||
FROM last_status
|
||||
),
|
||||
t12 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_delivery
|
||||
FROM last_status
|
||||
WHERE d_code IS NULL
|
||||
),
|
||||
t13 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS appear_date_is_good
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3','3.12', '3.13', '3.15', '3.1')
|
||||
)
|
||||
|
||||
SELECT
|
||||
SELECT
|
||||
COALESCE(t1.count_subpoena, 0) AS count_subpoena,
|
||||
COALESCE(t2.average_appeared, 0) AS average_appeared,
|
||||
COALESCE(t3.count_appeared, 0) AS count_appeared,
|
||||
COALESCE(t4.count_not_appeared, 0) AS count_not_appeared,
|
||||
COALESCE(t5.count_not_ap_good_reason, 0) AS count_not_ap_good_reason,
|
||||
COALESCE(t6.count_ap_not_required, 0) AS count_ap_not_required,
|
||||
COALESCE(t7.count_restrictions_applied, 0) AS count_restrictions_applied,
|
||||
COALESCE(t8.count_introduced_measures, 0) AS count_introduced_measures,
|
||||
COALESCE(t9.count_paper, 0) AS count_paper,
|
||||
COALESCE(t4.count_not_appeared, 0) AS count_not_appeared,
|
||||
COALESCE(t5.count_not_ap_good_reason, 0) AS count_not_ap_good_reason,
|
||||
COALESCE(t6.count_ap_not_required, 0) AS count_ap_not_required,
|
||||
COALESCE(t7.count_restrictions_applied, 0) AS count_restrictions_applied,
|
||||
COALESCE(t8.count_introduced_measures, 0) AS count_introduced_measures,
|
||||
COALESCE(t9.count_paper, 0) AS count_paper,
|
||||
COALESCE(t10.count_electron, 0) AS count_electron,
|
||||
COALESCE(t11.count_restrictions, 0) AS count_restrictions,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t3.count_appeared, 0) * 100.0 / t1.count_subpoena, 2) END AS appeared_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t4.count_not_appeared, 0) * 100.0 / t1.count_subpoena, 2) END AS not_appeared_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t5.count_not_ap_good_reason, 0) * 100.0 / t1.count_subpoena, 2) END AS not_ap_good_reason_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t6.count_ap_not_required, 0) * 100.0 / t1.count_subpoena, 2) END AS ap_not_required_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t10.count_electron, 0) * 100.0 / t1.count_subpoena, 2) END AS electron_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t9.count_paper, 0) * 100.0 / t1.count_subpoena, 2) END AS paper_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t7.count_restrictions_applied, 0) * 100.0 / t1.count_subpoena, 2) END AS restrictions_applied_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0 ELSE ROUND(COALESCE(t8.count_introduced_measures, 0) * 100.0 / t1.count_subpoena, 2) END AS introduced_measures_percent,
|
||||
COALESCE(t12.count_not_delivery, 0) AS count_not_delivery,
|
||||
COALESCE(t13.appear_date_is_good, 0) AS appear_date_is_good,
|
||||
ROUND(COALESCE(t3.count_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(COALESCE(t4.count_not_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(COALESCE(t5.count_not_ap_good_reason, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(COALESCE(t6.count_ap_not_required, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(COALESCE(t10.count_electron, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(COALESCE(t9.count_paper, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(COALESCE(t7.count_restrictions_applied, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
ROUND(COALESCE(t8.count_introduced_measures, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS introduced_measures_percent,
|
||||
ROUND(COALESCE(t12.count_not_delivery, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_delivery_percent,
|
||||
ROUND(COALESCE(t13.appear_date_is_good, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS appear_date_is_good_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
1 AS org,
|
||||
0 AS rest,
|
||||
'Осень' AS spring_autumn,
|
||||
1 AS org
|
||||
'Осень' AS spring_autumn
|
||||
FROM t1
|
||||
FULL OUTER JOIN t2 ON 1 = 1
|
||||
FULL OUTER JOIN t3 ON 1 = 1
|
||||
FULL OUTER JOIN t4 ON 1 = 1
|
||||
FULL OUTER JOIN t5 ON 1 = 1
|
||||
FULL OUTER JOIN t6 ON 1 = 1
|
||||
FULL OUTER JOIN t7 ON 1 = 1
|
||||
FULL OUTER JOIN t8 ON 1 = 1
|
||||
FULL OUTER JOIN t9 ON 1 = 1
|
||||
FULL OUTER JOIN t10 ON 1 = 1
|
||||
FULL OUTER JOIN t11 ON 1 = 1
|
||||
WHERE NOT (('${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '') AND (COALESCE(t1.count_subpoena, 0) > 0 OR COALESCE(t2.average_appeared, 0) > 0 OR COALESCE(t3.count_appeared, 0) > 0 OR COALESCE(t4.count_not_appeared, 0) > 0 OR COALESCE(t5.count_not_ap_good_reason, 0) > 0 OR COALESCE(t6.count_ap_not_required, 0) > 0 OR COALESCE(t7.count_restrictions_applied, 0) > 0 OR COALESCE(t8.count_introduced_measures, 0) > 0 OR COALESCE(t9.count_paper, 0) > 0 OR COALESCE(t10.count_electron, 0) > 0 OR COALESCE(t11.count_restrictions, 0) > 0));</sql>
|
||||
FULL OUTER JOIN t2 ON true
|
||||
FULL OUTER JOIN t3 ON true
|
||||
FULL OUTER JOIN t4 ON true
|
||||
FULL OUTER JOIN t5 ON true
|
||||
FULL OUTER JOIN t6 ON true
|
||||
FULL OUTER JOIN t7 ON true
|
||||
FULL OUTER JOIN t8 ON true
|
||||
FULL OUTER JOIN t9 ON true
|
||||
FULL OUTER JOIN t10 ON true
|
||||
FULL OUTER JOIN t11 ON true
|
||||
FULL OUTER JOIN t12 ON true
|
||||
FULL OUTER JOIN t13 ON true
|
||||
WHERE NOT (
|
||||
COALESCE('${VK_ARRAY}', '') = ''
|
||||
AND (
|
||||
COALESCE(t1.count_subpoena, 0) > 0
|
||||
OR COALESCE(t2.average_appeared, 0) > 0
|
||||
OR COALESCE(t3.count_appeared, 0) > 0
|
||||
OR COALESCE(t4.count_not_appeared, 0) > 0
|
||||
OR COALESCE(t5.count_not_ap_good_reason, 0) > 0
|
||||
OR COALESCE(t6.count_ap_not_required, 0) > 0
|
||||
OR COALESCE(t7.count_restrictions_applied, 0) > 0
|
||||
OR COALESCE(t8.count_introduced_measures, 0) > 0
|
||||
OR COALESCE(t9.count_paper, 0) > 0
|
||||
OR COALESCE(t10.count_electron, 0) > 0
|
||||
OR COALESCE(t11.count_restrictions, 0) > 0
|
||||
OR COALESCE(t12.count_not_delivery, 0) > 0
|
||||
OR COALESCE(t13.appear_date_is_good, 0) > 0
|
||||
)
|
||||
);</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -1236,8 +1236,8 @@
|
|||
SELECT COUNT(*) AS total
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
|
|
@ -1251,47 +1251,76 @@
|
|||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
)
|
||||
) AS has_higher,
|
||||
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
|
||||
-- Среднее профессиональное образование (если нет высшего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
)
|
||||
) AS has_average_prof,
|
||||
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
-- Общее образование (если нет высшего и среднего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
(ri.info->'svedRObr'->>'prOtsRObr' = '1' OR ri.info->'svedInObr'->>'prOtsInObr' = '1') AS has_no_data
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
NOT (
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
)
|
||||
)
|
||||
) AND (
|
||||
ri.info->'svedRObr'->>'prOtsRObr' = '1'
|
||||
OR ri.info->'svedInObr'->>'prOtsInObr' = '1'
|
||||
)
|
||||
) AS has_no_data
|
||||
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
|
|
@ -1311,7 +1340,7 @@ final_counts AS (
|
|||
FROM education_status
|
||||
)
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
'ALL' AS gender,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE higher END AS higher,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE average_prof END AS average_prof,
|
||||
|
|
@ -1337,7 +1366,7 @@ FROM final_counts, total_count;</sql>
|
|||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>432</xloc>
|
||||
<xloc>400</xloc>
|
||||
<yloc>192</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
|
|
@ -1358,9 +1387,8 @@ FROM final_counts, total_count;</sql>
|
|||
SELECT COUNT(*) AS total
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.gender = 'FEMALE'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' AND r.gender = 'FEMALE'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
|
|
@ -1374,48 +1402,76 @@ FROM final_counts, total_count;</sql>
|
|||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
)
|
||||
) AS has_higher,
|
||||
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
|
||||
-- Среднее профессиональное образование (если нет высшего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
)
|
||||
) AS has_average_prof,
|
||||
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
-- Общее образование (если нет высшего и среднего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
(ri.info->'svedRObr'->>'prOtsRObr' = '1' OR ri.info->'svedInObr'->>'prOtsInObr' = '1') AS has_no_data
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
NOT (
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
)
|
||||
)
|
||||
) AND (
|
||||
ri.info->'svedRObr'->>'prOtsRObr' = '1'
|
||||
OR ri.info->'svedInObr'->>'prOtsInObr' = '1'
|
||||
)
|
||||
) AS has_no_data
|
||||
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.gender = 'FEMALE'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' AND r.gender = 'FEMALE'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
|
|
@ -1435,7 +1491,7 @@ final_counts AS (
|
|||
FROM education_status
|
||||
)
|
||||
SELECT
|
||||
'W' AS gender,
|
||||
'W' AS gender,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE higher END AS higher,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE average_prof END AS average_prof,
|
||||
|
|
@ -1482,9 +1538,8 @@ FROM final_counts, total_count;</sql>
|
|||
SELECT COUNT(*) AS total
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.gender = 'MALE'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' AND r.gender = 'MALE'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
|
|
@ -1498,48 +1553,76 @@ FROM final_counts, total_count;</sql>
|
|||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
|
||||
)
|
||||
) AS has_higher,
|
||||
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
|
||||
-- Среднее профессиональное образование (если нет высшего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' = '10'
|
||||
)
|
||||
) AS has_average_prof,
|
||||
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
-- Общее образование (если нет высшего и среднего)
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
AND education->>'kodUrObr' IN ('7', '9')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
(ri.info->'svedRObr'->>'prOtsRObr' = '1' OR ri.info->'svedInObr'->>'prOtsInObr' = '1') AS has_no_data
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
NOT (
|
||||
(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
|
||||
) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
|
||||
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
|
||||
)
|
||||
)
|
||||
) AND (
|
||||
ri.info->'svedRObr'->>'prOtsRObr' = '1'
|
||||
OR ri.info->'svedInObr'->>'prOtsInObr' = '1'
|
||||
)
|
||||
) AS has_no_data
|
||||
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.gender = 'MALE'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true' AND r.gender = 'MALE'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
|
|
@ -1559,7 +1642,7 @@ final_counts AS (
|
|||
FROM education_status
|
||||
)
|
||||
SELECT
|
||||
'M' AS gender,
|
||||
'M' AS gender,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE higher END AS higher,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE average_prof END AS average_prof,
|
||||
|
|
@ -1585,7 +1668,7 @@ FROM final_counts, total_count;</sql>
|
|||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>432</xloc>
|
||||
<xloc>416</xloc>
|
||||
<yloc>352</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
|
|
|
|||
|
|
@ -555,91 +555,20 @@
|
|||
</attribute>
|
||||
</attributes>
|
||||
</connection>
|
||||
<connection>
|
||||
<name>postgres.person_registry</name>
|
||||
<server>person-dbhost</server>
|
||||
<type>POSTGRESQL</type>
|
||||
<access>Native</access>
|
||||
<database>person-dbname</database>
|
||||
<port>4444</port>
|
||||
<username>person-dbuser</username>
|
||||
<password>Encrypted 2be98afb80fd5818ba554aa72ce93bcc9</password>
|
||||
<servername/>
|
||||
<data_tablespace/>
|
||||
<index_tablespace/>
|
||||
<attributes>
|
||||
<attribute>
|
||||
<code>FORCE_IDENTIFIERS_TO_LOWERCASE</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>FORCE_IDENTIFIERS_TO_UPPERCASE</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>IS_CLUSTERED</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>PORT_NUMBER</code>
|
||||
<attribute>4444</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>PRESERVE_RESERVED_WORD_CASE</code>
|
||||
<attribute>Y</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>QUOTE_ALL_FIELDS</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>SUPPORTS_BOOLEAN_DATA_TYPE</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>SUPPORTS_TIMESTAMP_DATA_TYPE</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<code>USE_POOLING</code>
|
||||
<attribute>N</attribute>
|
||||
</attribute>
|
||||
</attributes>
|
||||
</connection>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Get variables 2 2</from>
|
||||
<to>Select values 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Merge join 2</from>
|
||||
<to>Get variables 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 2 2</from>
|
||||
<to>Insert / update (total_registered.removed_registry) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Sort rows 3</from>
|
||||
<to>Merge join 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Sort rows 2 2</from>
|
||||
<to>Merge join 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (decision-document-service) регион</from>
|
||||
<to>Sort rows 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input 2 (person_registry) регион</from>
|
||||
<to>Sort rows 3</to>
|
||||
<from>Table input (decision-document-service) регион 2</from>
|
||||
<to>Get variables 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
|
|
@ -802,40 +731,6 @@
|
|||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Merge join 2</name>
|
||||
<type>MergeJoin</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<join_type>FULL OUTER</join_type>
|
||||
<step1>Sort rows 2 2</step1>
|
||||
<step2>Sort rows 3</step2>
|
||||
<keys_1>
|
||||
<key>org</key>
|
||||
</keys_1>
|
||||
<keys_2>
|
||||
<key>org</key>
|
||||
</keys_2>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>576</xloc>
|
||||
<yloc>320</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Select values 2 2</name>
|
||||
<type>SelectValues</type>
|
||||
|
|
@ -899,91 +794,7 @@
|
|||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Sort rows 2 2</name>
|
||||
<type>SortRows</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<directory>%%java.io.tmpdir%%</directory>
|
||||
<prefix>out</prefix>
|
||||
<sort_size>1000000</sort_size>
|
||||
<free_memory/>
|
||||
<compress>N</compress>
|
||||
<compress_variable/>
|
||||
<unique_rows>N</unique_rows>
|
||||
<fields>
|
||||
<field>
|
||||
<name>org</name>
|
||||
<ascending>Y</ascending>
|
||||
<case_sensitive>N</case_sensitive>
|
||||
<collator_enabled>N</collator_enabled>
|
||||
<collator_strength>0</collator_strength>
|
||||
<presorted>N</presorted>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>480</xloc>
|
||||
<yloc>320</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Sort rows 3</name>
|
||||
<type>SortRows</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<directory>%%java.io.tmpdir%%</directory>
|
||||
<prefix>out</prefix>
|
||||
<sort_size>1000000</sort_size>
|
||||
<free_memory/>
|
||||
<compress>N</compress>
|
||||
<compress_variable/>
|
||||
<unique_rows>N</unique_rows>
|
||||
<fields>
|
||||
<field>
|
||||
<name>org</name>
|
||||
<ascending>Y</ascending>
|
||||
<case_sensitive>N</case_sensitive>
|
||||
<collator_enabled>N</collator_enabled>
|
||||
<collator_strength>0</collator_strength>
|
||||
<presorted>N</presorted>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>464</xloc>
|
||||
<yloc>432</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Table input (decision-document-service) регион</name>
|
||||
<name>Table input (decision-document-service) регион 2</name>
|
||||
<type>TableInput</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
|
|
@ -994,102 +805,43 @@
|
|||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.decision-document-service</connection>
|
||||
<sql>WITH t1 AS (
|
||||
SELECT COUNT(*) AS age_limit
|
||||
FROM public.decision d
|
||||
INNER JOIN public.decision_type dt ON dt.id = d.type_id AND dt.code = '9'
|
||||
WHERE d.extra_info ->> 'cause' = '"ageLimit"'
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
OR d.recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
)
|
||||
),
|
||||
t2 AS (
|
||||
SELECT COUNT(*) AS death
|
||||
FROM public.decision d
|
||||
INNER JOIN public.decision_type dt ON dt.id = d.type_id AND dt.code = '9'
|
||||
WHERE d.extra_info ->> 'cause' = '"notAlive"'
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
OR d.recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
)
|
||||
)
|
||||
SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(t1.age_limit, 0) END AS age_limit,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(t2.death, 0) END AS death,
|
||||
1 AS org,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
0 AS deprivation_citizenship,
|
||||
0 AS travel_abroad,
|
||||
0 AS living_abroad,
|
||||
0 AS other,
|
||||
0 AS deprivation_citizen_percents,
|
||||
0 AS age_limit_percent,
|
||||
0 AS death_percent,
|
||||
0 AS travel_abroad_percent,
|
||||
0 AS living_abroad_percent,
|
||||
0 AS other_percent
|
||||
FROM t1
|
||||
FULL OUTER JOIN t2 ON 1 = 1;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
<variables_active>Y</variables_active>
|
||||
<lazy_conversion_active>N</lazy_conversion_active>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>208</xloc>
|
||||
<yloc>320</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Table input 2 (person_registry) регион</name>
|
||||
<type>TableInput</type>
|
||||
<description/>
|
||||
<distribute>N</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.person_registry</connection>
|
||||
<sql>SELECT
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0
|
||||
ELSE COUNT(*)
|
||||
END AS removed_registry,
|
||||
1 AS org
|
||||
FROM public.recruits r
|
||||
<sql>WITH
|
||||
total_info AS (
|
||||
SELECT
|
||||
COUNT(*) AS removed_registry,
|
||||
COUNT(CASE WHEN d.extra_info ->> 'cause' = 'ageLimit' THEN 1 END) AS age_limit, -- Количество по причине предельный возраст
|
||||
COUNT(CASE WHEN d.extra_info ->> 'cause' = 'notAlive' THEN 1 END) AS death, -- Количество по причине смерть
|
||||
COUNT(CASE WHEN (d.extra_info ->> 'cause' IS NULL OR d.extra_info ->> 'cause' NOT IN ('ageLimit', 'notAlive')) THEN 1 END) AS other,
|
||||
ROUND(COUNT(CASE WHEN d.extra_info ->> 'cause' = 'ageLimit' THEN 1 END) * 100.0 / NULLIF(COUNT(*), 0), 2) AS age_limit_percent,
|
||||
ROUND(COUNT(CASE WHEN d.extra_info ->> 'cause' = 'notAlive' THEN 1 END) * 100.0 / NULLIF(COUNT(*), 0), 2) AS death_percent,
|
||||
ROUND(COUNT(CASE WHEN (d.extra_info ->> 'cause' IS NULL OR d.extra_info ->> 'cause' NOT IN ('ageLimit', 'notAlive')) THEN 1 END) * 100.0 / NULLIF(COUNT(*), 0), 2) AS other_percent,
|
||||
'00' AS recruitment_id
|
||||
FROM public.recruit AS r
|
||||
JOIN public.decision AS d
|
||||
ON d.recruit_id = r.id
|
||||
JOIN public.decision_type AS dt
|
||||
ON dt.id = d.type_id
|
||||
WHERE r.system_pgs_status = '1.3'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
OR r.target_recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
);</sql>
|
||||
AND r.current_recruitment IS NOT NULL
|
||||
AND r.target_recruitment IS NOT NULL
|
||||
AND dt.code in ('9','10')
|
||||
)
|
||||
SELECT
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(total_info.removed_registry, 0) END AS removed_registry,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(total_info.age_limit, 0) END AS age_limit,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(total_info.death, 0) END AS death,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(total_info.other, 0) END AS other,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(total_info.age_limit_percent, 0) END AS age_limit_percent,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(total_info.death_percent, 0) END AS death_percent,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(total_info.other_percent, 0) END AS other_percent,
|
||||
'0' AS deprivation_citizenship,
|
||||
'0' AS travel_abroad,
|
||||
'0' AS living_abroad,
|
||||
'0' AS deprivation_citizen_percents,
|
||||
'0' AS travel_abroad_percent,
|
||||
'0' AS living_abroad_percent
|
||||
FROM total_info</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1104,8 +856,8 @@ WHERE r.system_pgs_status = '1.3'
|
|||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>208</xloc>
|
||||
<yloc>432</yloc>
|
||||
<xloc>400</xloc>
|
||||
<yloc>320</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
|
|
|
|||
|
|
@ -1102,7 +1102,7 @@
|
|||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
|
|
@ -1123,12 +1123,13 @@
|
|||
LEFT JOIN restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
WHERE sr.type = '1'
|
||||
AND ssh.code NOT IN ('3.14','3.7','3.72', '3.71')
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
COALESCE('${VK_ARRAY}', '') = ''
|
||||
OR s.department_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')),
|
||||
','
|
||||
)::uuid[]
|
||||
)
|
||||
)
|
||||
|
|
@ -1146,12 +1147,12 @@ t1 AS (
|
|||
t2 AS (
|
||||
SELECT ROUND(AVG(EXTRACT(DAY FROM (history_date::timestamp - send_date::timestamp))), 1) AS average_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
|
|
@ -1181,7 +1182,7 @@ t8 AS (
|
|||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code = '14'
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
|
|
@ -1189,60 +1190,77 @@ t10 AS (
|
|||
WHERE d_code = '7'
|
||||
),
|
||||
t11 AS (
|
||||
SELECT COUNT(DISTINCT rdi_id) AS count_restrictions
|
||||
SELECT COUNT (DISTINCT rdi_id) AS count_restrictions
|
||||
FROM last_status
|
||||
),
|
||||
t12 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_delivery
|
||||
FROM last_status
|
||||
WHERE d_code IS NULL
|
||||
),
|
||||
t13 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS appear_date_is_good
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3','3.12', '3.13', '3.15', '3.1')
|
||||
)
|
||||
SELECT
|
||||
SELECT
|
||||
COALESCE(t1.count_subpoena, 0) AS count_subpoena,
|
||||
COALESCE(t2.average_appeared, 0) AS average_appeared,
|
||||
COALESCE(t3.count_appeared, 0) AS count_appeared,
|
||||
COALESCE(t4.count_not_appeared, 0) AS count_not_appeared,
|
||||
COALESCE(t5.count_not_ap_good_reason, 0) AS count_not_ap_good_reason,
|
||||
COALESCE(t6.count_ap_not_required, 0) AS count_ap_not_required,
|
||||
COALESCE(t7.count_restrictions_applied, 0) AS count_restrictions_applied,
|
||||
COALESCE(t8.count_introduced_measures, 0) AS count_introduced_measures,
|
||||
COALESCE(t9.count_paper, 0) AS count_paper,
|
||||
COALESCE(t4.count_not_appeared, 0) AS count_not_appeared,
|
||||
COALESCE(t5.count_not_ap_good_reason, 0) AS count_not_ap_good_reason,
|
||||
COALESCE(t6.count_ap_not_required, 0) AS count_ap_not_required,
|
||||
COALESCE(t7.count_restrictions_applied, 0) AS count_restrictions_applied,
|
||||
COALESCE(t8.count_introduced_measures, 0) AS count_introduced_measures,
|
||||
COALESCE(t9.count_paper, 0) AS count_paper,
|
||||
COALESCE(t10.count_electron, 0) AS count_electron,
|
||||
COALESCE(t11.count_restrictions, 0) AS count_restrictions,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t3.count_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS appeared_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t4.count_not_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS not_appeared_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t5.count_not_ap_good_reason, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS not_ap_good_reason_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t6.count_ap_not_required, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS ap_not_required_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t10.count_electron, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS electron_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t9.count_paper, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS paper_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t7.count_restrictions_applied, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS restrictions_applied_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t8.count_introduced_measures, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS introduced_measures_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
1 AS org,
|
||||
COALESCE(t12.count_not_delivery, 0) AS count_not_delivery,
|
||||
COALESCE(t13.appear_date_is_good, 0) AS appear_date_is_good,
|
||||
ROUND(COALESCE(t3.count_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(COALESCE(t4.count_not_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(COALESCE(t5.count_not_ap_good_reason, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(COALESCE(t6.count_ap_not_required, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(COALESCE(t10.count_electron, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(COALESCE(t9.count_paper, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(COALESCE(t7.count_restrictions_applied, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
ROUND(COALESCE(t8.count_introduced_measures, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS introduced_measures_percent,
|
||||
ROUND(COALESCE(t12.count_not_delivery, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_delivery_percent,
|
||||
ROUND(COALESCE(t13.appear_date_is_good, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS appear_date_is_good_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
1 AS org,
|
||||
0 AS mil_reg
|
||||
FROM t1
|
||||
FULL OUTER JOIN t2 ON 1 = 1
|
||||
FULL OUTER JOIN t3 ON 1 = 1
|
||||
FULL OUTER JOIN t4 ON 1 = 1
|
||||
FULL OUTER JOIN t5 ON 1 = 1
|
||||
FULL OUTER JOIN t6 ON 1 = 1
|
||||
FULL OUTER JOIN t7 ON 1 = 1
|
||||
FULL OUTER JOIN t8 ON 1 = 1
|
||||
FULL OUTER JOIN t9 ON 1 = 1
|
||||
FULL OUTER JOIN t10 ON 1 = 1
|
||||
FULL OUTER JOIN t11 ON 1 = 1
|
||||
WHERE NOT (('${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '') AND (COALESCE(t1.count_subpoena, 0) > 0 OR COALESCE(t2.average_appeared, 0) > 0 OR COALESCE(t3.count_appeared, 0) > 0 OR COALESCE(t4.count_not_appeared, 0) > 0 OR COALESCE(t5.count_not_ap_good_reason, 0) > 0 OR COALESCE(t6.count_ap_not_required, 0) > 0 OR COALESCE(t7.count_restrictions_applied, 0) > 0 OR COALESCE(t8.count_introduced_measures, 0) > 0 OR COALESCE(t9.count_paper, 0) > 0 OR COALESCE(t10.count_electron, 0) > 0 OR COALESCE(t11.count_restrictions, 0) > 0));</sql>
|
||||
FULL OUTER JOIN t2 ON true
|
||||
FULL OUTER JOIN t3 ON true
|
||||
FULL OUTER JOIN t4 ON true
|
||||
FULL OUTER JOIN t5 ON true
|
||||
FULL OUTER JOIN t6 ON true
|
||||
FULL OUTER JOIN t7 ON true
|
||||
FULL OUTER JOIN t8 ON true
|
||||
FULL OUTER JOIN t9 ON true
|
||||
FULL OUTER JOIN t10 ON true
|
||||
FULL OUTER JOIN t11 ON true
|
||||
FULL OUTER JOIN t12 ON true
|
||||
FULL OUTER JOIN t13 ON true
|
||||
WHERE NOT (
|
||||
COALESCE('${VK_ARRAY}', '') = ''
|
||||
AND (
|
||||
COALESCE(t1.count_subpoena, 0) > 0
|
||||
OR COALESCE(t2.average_appeared, 0) > 0
|
||||
OR COALESCE(t3.count_appeared, 0) > 0
|
||||
OR COALESCE(t4.count_not_appeared, 0) > 0
|
||||
OR COALESCE(t5.count_not_ap_good_reason, 0) > 0
|
||||
OR COALESCE(t6.count_ap_not_required, 0) > 0
|
||||
OR COALESCE(t7.count_restrictions_applied, 0) > 0
|
||||
OR COALESCE(t8.count_introduced_measures, 0) > 0
|
||||
OR COALESCE(t9.count_paper, 0) > 0
|
||||
OR COALESCE(t10.count_electron, 0) > 0
|
||||
OR COALESCE(t11.count_restrictions, 0) > 0
|
||||
OR COALESCE(t12.count_not_delivery, 0) > 0
|
||||
OR COALESCE(t13.appear_date_is_good, 0) > 0
|
||||
)
|
||||
);</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1275,7 +1293,7 @@ WHERE NOT (('${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '') AND (COALESCE(t1.count_
|
|||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
|
|
@ -1296,12 +1314,13 @@ WHERE NOT (('${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '') AND (COALESCE(t1.count_
|
|||
LEFT JOIN restriction_document_item AS rdi ON rdi.restriction_document_create_id = rd.id
|
||||
LEFT JOIN subpoena_send_info AS ssi ON ssi.subpoena_id = s.id
|
||||
WHERE sr.type != '1'
|
||||
AND ssh.code NOT IN ('3.14','3.7','3.72', '3.71')
|
||||
AND (
|
||||
'${VK_ARRAY}' IS NULL
|
||||
OR '${VK_ARRAY}' = ''
|
||||
COALESCE('${VK_ARRAY}', '') = ''
|
||||
OR s.department_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')),
|
||||
','
|
||||
)::uuid[]
|
||||
)
|
||||
)
|
||||
|
|
@ -1319,12 +1338,12 @@ t1 AS (
|
|||
t2 AS (
|
||||
SELECT ROUND(AVG(EXTRACT(DAY FROM (history_date::timestamp - send_date::timestamp))), 1) AS average_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '4.1' OR sub_stat_hist = '4.2'
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
|
|
@ -1354,7 +1373,7 @@ t8 AS (
|
|||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code = '14'
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
|
|
@ -1362,60 +1381,77 @@ t10 AS (
|
|||
WHERE d_code = '7'
|
||||
),
|
||||
t11 AS (
|
||||
SELECT COUNT(DISTINCT rdi_id) AS count_restrictions
|
||||
SELECT COUNT (DISTINCT rdi_id) AS count_restrictions
|
||||
FROM last_status
|
||||
),
|
||||
t12 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_delivery
|
||||
FROM last_status
|
||||
WHERE d_code IS NULL
|
||||
),
|
||||
t13 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS appear_date_is_good
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3','3.12', '3.13', '3.15', '3.1')
|
||||
)
|
||||
SELECT
|
||||
SELECT
|
||||
COALESCE(t1.count_subpoena, 0) AS count_subpoena,
|
||||
COALESCE(t2.average_appeared, 0) AS average_appeared,
|
||||
COALESCE(t3.count_appeared, 0) AS count_appeared,
|
||||
COALESCE(t4.count_not_appeared, 0) AS count_not_appeared,
|
||||
COALESCE(t5.count_not_ap_good_reason, 0) AS count_not_ap_good_reason,
|
||||
COALESCE(t6.count_ap_not_required, 0) AS count_ap_not_required,
|
||||
COALESCE(t7.count_restrictions_applied, 0) AS count_restrictions_applied,
|
||||
COALESCE(t8.count_introduced_measures, 0) AS count_introduced_measures,
|
||||
COALESCE(t9.count_paper, 0) AS count_paper,
|
||||
COALESCE(t4.count_not_appeared, 0) AS count_not_appeared,
|
||||
COALESCE(t5.count_not_ap_good_reason, 0) AS count_not_ap_good_reason,
|
||||
COALESCE(t6.count_ap_not_required, 0) AS count_ap_not_required,
|
||||
COALESCE(t7.count_restrictions_applied, 0) AS count_restrictions_applied,
|
||||
COALESCE(t8.count_introduced_measures, 0) AS count_introduced_measures,
|
||||
COALESCE(t9.count_paper, 0) AS count_paper,
|
||||
COALESCE(t10.count_electron, 0) AS count_electron,
|
||||
COALESCE(t11.count_restrictions, 0) AS count_restrictions,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t3.count_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS appeared_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t4.count_not_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS not_appeared_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t5.count_not_ap_good_reason, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS not_ap_good_reason_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t6.count_ap_not_required, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS ap_not_required_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t10.count_electron, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS electron_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t9.count_paper, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS paper_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t7.count_restrictions_applied, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS restrictions_applied_percent,
|
||||
CASE WHEN COALESCE(t1.count_subpoena, 0) = 0 THEN 0
|
||||
ELSE ROUND(COALESCE(t8.count_introduced_measures, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2)
|
||||
END AS introduced_measures_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
1 AS org,
|
||||
COALESCE(t12.count_not_delivery, 0) AS count_not_delivery,
|
||||
COALESCE(t13.appear_date_is_good, 0) AS appear_date_is_good,
|
||||
ROUND(COALESCE(t3.count_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS appeared_percent,
|
||||
ROUND(COALESCE(t4.count_not_appeared, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_appeared_percent,
|
||||
ROUND(COALESCE(t5.count_not_ap_good_reason, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_ap_good_reason_percent,
|
||||
ROUND(COALESCE(t6.count_ap_not_required, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS ap_not_required_percent,
|
||||
ROUND(COALESCE(t10.count_electron, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS electron_percent,
|
||||
ROUND(COALESCE(t9.count_paper, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS paper_percent,
|
||||
ROUND(COALESCE(t7.count_restrictions_applied, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS restrictions_applied_percent,
|
||||
ROUND(COALESCE(t8.count_introduced_measures, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS introduced_measures_percent,
|
||||
ROUND(COALESCE(t12.count_not_delivery, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS not_delivery_percent,
|
||||
ROUND(COALESCE(t13.appear_date_is_good, 0) * 100.0 / NULLIF(t1.count_subpoena, 0), 2) AS appear_date_is_good_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
1 AS org,
|
||||
1 AS mil_reg
|
||||
FROM t1
|
||||
FULL OUTER JOIN t2 ON 1 = 1
|
||||
FULL OUTER JOIN t3 ON 1 = 1
|
||||
FULL OUTER JOIN t4 ON 1 = 1
|
||||
FULL OUTER JOIN t5 ON 1 = 1
|
||||
FULL OUTER JOIN t6 ON 1 = 1
|
||||
FULL OUTER JOIN t7 ON 1 = 1
|
||||
FULL OUTER JOIN t8 ON 1 = 1
|
||||
FULL OUTER JOIN t9 ON 1 = 1
|
||||
FULL OUTER JOIN t10 ON 1 = 1
|
||||
FULL OUTER JOIN t11 ON 1 = 1
|
||||
WHERE NOT (('${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '') AND (COALESCE(t1.count_subpoena, 0) > 0 OR COALESCE(t2.average_appeared, 0) > 0 OR COALESCE(t3.count_appeared, 0) > 0 OR COALESCE(t4.count_not_appeared, 0) > 0 OR COALESCE(t5.count_not_ap_good_reason, 0) > 0 OR COALESCE(t6.count_ap_not_required, 0) > 0 OR COALESCE(t7.count_restrictions_applied, 0) > 0 OR COALESCE(t8.count_introduced_measures, 0) > 0 OR COALESCE(t9.count_paper, 0) > 0 OR COALESCE(t10.count_electron, 0) > 0 OR COALESCE(t11.count_restrictions, 0) > 0));</sql>
|
||||
FULL OUTER JOIN t2 ON true
|
||||
FULL OUTER JOIN t3 ON true
|
||||
FULL OUTER JOIN t4 ON true
|
||||
FULL OUTER JOIN t5 ON true
|
||||
FULL OUTER JOIN t6 ON true
|
||||
FULL OUTER JOIN t7 ON true
|
||||
FULL OUTER JOIN t8 ON true
|
||||
FULL OUTER JOIN t9 ON true
|
||||
FULL OUTER JOIN t10 ON true
|
||||
FULL OUTER JOIN t11 ON true
|
||||
FULL OUTER JOIN t12 ON true
|
||||
FULL OUTER JOIN t13 ON true
|
||||
WHERE NOT (
|
||||
COALESCE('${VK_ARRAY}', '') = ''
|
||||
AND (
|
||||
COALESCE(t1.count_subpoena, 0) > 0
|
||||
OR COALESCE(t2.average_appeared, 0) > 0
|
||||
OR COALESCE(t3.count_appeared, 0) > 0
|
||||
OR COALESCE(t4.count_not_appeared, 0) > 0
|
||||
OR COALESCE(t5.count_not_ap_good_reason, 0) > 0
|
||||
OR COALESCE(t6.count_ap_not_required, 0) > 0
|
||||
OR COALESCE(t7.count_restrictions_applied, 0) > 0
|
||||
OR COALESCE(t8.count_introduced_measures, 0) > 0
|
||||
OR COALESCE(t9.count_paper, 0) > 0
|
||||
OR COALESCE(t10.count_electron, 0) > 0
|
||||
OR COALESCE(t11.count_restrictions, 0) > 0
|
||||
OR COALESCE(t12.count_not_delivery, 0) > 0
|
||||
OR COALESCE(t13.appear_date_is_good, 0) > 0
|
||||
)
|
||||
);</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue