change country counting
This commit is contained in:
parent
1940b40a6a
commit
1fd405140a
20 changed files with 6054 additions and 4063 deletions
|
|
@ -504,57 +504,6 @@
|
|||
</attribute>
|
||||
</attributes>
|
||||
</connection>
|
||||
<connection>
|
||||
<name>postgres.appeal-document-service</name>
|
||||
<server>appeal-dbhost</server>
|
||||
<type>POSTGRESQL</type>
|
||||
<access>Native</access>
|
||||
<database>appeal-dbname</database>
|
||||
<port>2222</port>
|
||||
<username>appeal-dbuser</username>
|
||||
<password>Encrypted 2be98afa91ad79785a754aa72ce93bcc9</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>2222</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>Table input (appeal_document) РФ</from>
|
||||
|
|
@ -795,39 +744,48 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.appeal-document-service</connection>
|
||||
<sql>WITH
|
||||
t1 AS (
|
||||
SELECT COUNT(*) AS total_appeals
|
||||
FROM public.appeal_document
|
||||
),
|
||||
t2 AS (
|
||||
SELECT
|
||||
ROUND(
|
||||
AVG(
|
||||
(TRIM(BOTH '"' FROM (ad.extra_info ->> 'resultDate')::text)::date - ad.appeal_date)
|
||||
),
|
||||
2
|
||||
) AS average_consideration
|
||||
FROM public.appeal_document ad
|
||||
),
|
||||
resolved AS (
|
||||
SELECT COUNT(*) AS resolved
|
||||
FROM public.appeal_document ad
|
||||
WHERE ad.extra_info->>'result' IN ('1', '2')
|
||||
)
|
||||
SELECT
|
||||
t1.total_appeals,
|
||||
t2.average_consideration,
|
||||
r.resolved,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(total_appeals) END AS total_appeals,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(resolved) END AS resolved,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average_consideration) END AS average_consideration,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average_rating) END AS average_rating,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average_to_face) END AS average_to_face,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("average_EPGU") END AS average_epgu,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(average_to_face) + SUM("average_EPGU")) > 0
|
||||
THEN ROUND((SUM(average_to_face) / (SUM(average_to_face) + SUM("average_EPGU")) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS average_to_face_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(average_to_face) + SUM("average_EPGU")) > 0
|
||||
THEN ROUND((SUM("average_EPGU") / (SUM(average_to_face) + SUM("average_EPGU")) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS average_epgu_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
0 AS average_rating,
|
||||
0 AS average_to_face,
|
||||
0 AS average_epgu,
|
||||
0 AS average_to_face_percent,
|
||||
0 AS average_epgu_percent
|
||||
FROM t1, t2, resolved AS r;</sql>
|
||||
'Ministry' AS schema
|
||||
FROM main_dashboard.appeals
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -504,169 +504,12 @@
|
|||
</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>
|
||||
<type>POSTGRESQL</type>
|
||||
<access>Native</access>
|
||||
<database>subpoena-dbname</database>
|
||||
<port>5555</port>
|
||||
<username>subpoena-dbuser</username>
|
||||
<password>Encrypted 2beebdaaa1ac8978aaa54aa72ce93bcc9</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>5555</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>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>N</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>N</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/весна</from>
|
||||
<to>Sort rows 3 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Get variables 3 2</from>
|
||||
<to>Select values 3 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Merge join 2</from>
|
||||
<to>Get variables 3 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2</from>
|
||||
<to>Insert / update (main_dashboard.recruitment_campaign)</to>
|
||||
|
|
@ -678,13 +521,18 @@
|
|||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Merge join 2 2</from>
|
||||
<to>Get variables 3 2 2</to>
|
||||
<from>Select values 3 2 2</from>
|
||||
<to>Insert / update (main_dashboard.recruitment_campaign) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 2</from>
|
||||
<to>Insert / update (main_dashboard.recruitment_campaign) 2</to>
|
||||
<from>Table input (subpoena) РФ/осень</from>
|
||||
<to>Get variables 3 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (subpoena) РФ/весна</from>
|
||||
<to>Get variables 3 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
|
|
@ -1020,74 +868,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>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>Select values 3 2</name>
|
||||
<type>SelectValues</type>
|
||||
|
|
@ -1212,276 +992,6 @@
|
|||
<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>
|
||||
<step>
|
||||
<name>Table input (subpoena) РФ/весна</name>
|
||||
<type>TableInput</type>
|
||||
|
|
@ -1493,87 +1003,74 @@ FROM public.recruits AS r
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
ssh.code AS sub_stat_hist,
|
||||
s.send_date,
|
||||
sh.date_time::timestamp AS history_date,
|
||||
rdi.restriction_document_cancel_id AS restr_dc,
|
||||
rdi.applied_date AS ap_date,
|
||||
rdi.id AS rdi_id,
|
||||
ssi.delivery_code AS d_code,
|
||||
s.recruit_id, -- recruit_id добавляем, если есть
|
||||
sh.date_time
|
||||
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'
|
||||
AND EXTRACT(YEAR FROM AGE(s.date_birth)) BETWEEN 18 AND 30
|
||||
),
|
||||
last_status_data AS (
|
||||
-- Выбираем последнюю дату истории для каждой subpoena
|
||||
SELECT
|
||||
s.subpoena_id,
|
||||
MAX(s.history_date) AS last_history_date
|
||||
FROM subpoena_data s
|
||||
GROUP BY s.subpoena_id
|
||||
),
|
||||
last_status AS (
|
||||
-- Соединяем таблицу с максимальной датой и оригинальные данные, чтобы выбрать последние записи
|
||||
SELECT
|
||||
sd.*
|
||||
FROM subpoena_data sd
|
||||
JOIN last_status_data lsd
|
||||
ON sd.subpoena_id = lsd.subpoena_id
|
||||
AND sd.history_date = lsd.last_history_date
|
||||
),
|
||||
t1 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_subpoena
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IS NOT NULL
|
||||
),
|
||||
t2 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist in ('5', '5.1')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT recruit_id) AS new_recruits
|
||||
FROM subpoena_data
|
||||
)
|
||||
SELECT
|
||||
t1.count_subpoena,
|
||||
t2.count_appeared,
|
||||
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,
|
||||
0 AS postponement_have_right,
|
||||
-- 0 AS postponement_granted,
|
||||
0 AS postponement_have_right_percent,
|
||||
-- 0 AS postponement_granted_percent,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(subpoenas_sent) END AS count_subpoena,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(appeared_on_subpoenas) END AS count_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_appeared_on_subpoenas) END AS count_not_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(new_recruits) END AS new_recruits,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(postponement_have_right) END AS postponement_have_right,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(postponement_granted) END AS postponement_granted,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoenas_sent) > 0
|
||||
THEN ROUND((SUM(appeared_on_subpoenas) / SUM(subpoenas_sent) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS appeared_on_subpoenas_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoenas_sent) > 0
|
||||
THEN ROUND((SUM(not_appeared_on_subpoenas) / SUM(subpoenas_sent) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_appeared_on_subpoenas_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoenas_sent) > 0
|
||||
THEN ROUND((SUM(postponement_have_right) / SUM(subpoenas_sent) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS postponement_have_right_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoenas_sent) > 0
|
||||
THEN ROUND((SUM(postponement_granted) / SUM(subpoenas_sent) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS postponement_granted_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Весна' AS spring_autumn,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
1 AS org
|
||||
FROM t1
|
||||
JOIN t2 ON true
|
||||
JOIN t3 ON true
|
||||
JOIN t4 ON true;</sql>
|
||||
'Ministry' AS schema
|
||||
FROM main_dashboard.recruitment_campaign
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND spring_autumn = 'Весна'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1604,87 +1101,74 @@ JOIN t4 ON true;</sql>
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
ssh.code AS sub_stat_hist,
|
||||
s.send_date,
|
||||
sh.date_time::timestamp AS history_date,
|
||||
rdi.restriction_document_cancel_id AS restr_dc,
|
||||
rdi.applied_date AS ap_date,
|
||||
rdi.id AS rdi_id,
|
||||
ssi.delivery_code AS d_code,
|
||||
s.recruit_id, -- recruit_id добавляем, если есть
|
||||
sh.date_time
|
||||
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' -- статус изменен на 3
|
||||
AND EXTRACT(YEAR FROM AGE(s.date_birth)) BETWEEN 18 AND 30
|
||||
),
|
||||
last_status_data AS (
|
||||
-- Выбираем последнюю дату истории для каждой subpoena
|
||||
SELECT
|
||||
s.subpoena_id,
|
||||
MAX(s.history_date) AS last_history_date
|
||||
FROM subpoena_data s
|
||||
GROUP BY s.subpoena_id
|
||||
),
|
||||
last_status AS (
|
||||
-- Соединяем таблицу с максимальной датой и оригинальные данные, чтобы выбрать последние записи
|
||||
SELECT
|
||||
sd.*
|
||||
FROM subpoena_data sd
|
||||
JOIN last_status_data lsd
|
||||
ON sd.subpoena_id = lsd.subpoena_id
|
||||
AND sd.history_date = lsd.last_history_date
|
||||
),
|
||||
t1 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_subpoena
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IS NOT NULL
|
||||
),
|
||||
t2 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist in ('5', '5.1') -- добавлен статус 5.1
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT recruit_id) AS new_recruits
|
||||
FROM subpoena_data
|
||||
)
|
||||
SELECT
|
||||
t1.count_subpoena,
|
||||
t2.count_appeared,
|
||||
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,
|
||||
0 AS postponement_have_right,
|
||||
-- 0 AS postponement_granted,
|
||||
0 AS postponement_have_right_percent,
|
||||
-- 0 AS postponement_granted_percent,
|
||||
'Осень' AS spring_autumn,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(subpoenas_sent) END AS count_subpoena,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(appeared_on_subpoenas) END AS count_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_appeared_on_subpoenas) END AS count_not_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(new_recruits) END AS new_recruits,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(postponement_have_right) END AS postponement_have_right,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(postponement_granted) END AS postponement_granted,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoenas_sent) > 0
|
||||
THEN ROUND((SUM(appeared_on_subpoenas) / SUM(subpoenas_sent) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS appeared_on_subpoenas_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoenas_sent) > 0
|
||||
THEN ROUND((SUM(not_appeared_on_subpoenas) / SUM(subpoenas_sent) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_appeared_on_subpoenas_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoenas_sent) > 0
|
||||
THEN ROUND((SUM(postponement_have_right) / SUM(subpoenas_sent) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS postponement_have_right_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoenas_sent) > 0
|
||||
THEN ROUND((SUM(postponement_granted) / SUM(subpoenas_sent) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS postponement_granted_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
1 AS org
|
||||
FROM t1
|
||||
JOIN t2 ON true
|
||||
JOIN t3 ON true
|
||||
JOIN t4 ON true;</sql>
|
||||
'Осень' AS spring_autumn,
|
||||
'Ministry' AS schema
|
||||
FROM main_dashboard.recruitment_campaign
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND spring_autumn = 'Осень'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -504,57 +504,6 @@
|
|||
</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>Table input (person_registry) РФ</from>
|
||||
|
|
@ -800,88 +749,60 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.person_registry</connection>
|
||||
<sql>WITH vse as (
|
||||
select *,
|
||||
r.id as r_id
|
||||
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
|
||||
),
|
||||
extracted_children AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child
|
||||
FROM
|
||||
vse ri
|
||||
WHERE
|
||||
jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array'
|
||||
),
|
||||
children_birth_dates AS (
|
||||
SELECT
|
||||
recruit_id,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'den')::int AS day,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'mesyacz')::int AS month,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'god')::int AS year
|
||||
FROM
|
||||
extracted_children
|
||||
),
|
||||
children_count AS (
|
||||
SELECT
|
||||
recruit_id,
|
||||
COUNT(*) AS children_under_16
|
||||
FROM
|
||||
children_birth_dates
|
||||
WHERE
|
||||
AGE(make_date(year, month, day)) < interval '16 years'
|
||||
GROUP BY
|
||||
recruit_id
|
||||
),
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
COUNT(*) AS total_count,
|
||||
COUNT(*) FILTER (WHERE gender = 'MALE') AS male_count,
|
||||
COUNT(*) FILTER (WHERE gender = 'FEMALE') AS female_count,
|
||||
COUNT(*) FILTER (
|
||||
WHERE (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 70
|
||||
AND gender = 'MALE') -- мужчины от 18 до 70 лет
|
||||
OR
|
||||
(EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 45
|
||||
AND gender = 'FEMALE') -- женщины от 18 до 45 лет
|
||||
AND (conscription IS NULL OR conscription = false) -- отсутствие отсрочки
|
||||
AND COALESCE(cc.children_under_16, 0) < 5 -- исключить рекрутов с 5 и более детьми младше 16 лет
|
||||
) AS mobilization_criterion,
|
||||
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 volunteer_criterion,
|
||||
COUNT(*) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 50
|
||||
AND gender = 'MALE' -- мужчины от 18 до 50 лет
|
||||
AND (conscription IS NULL OR conscription = false) -- отсутствие отсрочки
|
||||
AND ri.info->'svedSudim'->>'prOtsSvedSudim' = '1' -- признак отсутствия данных о судимости
|
||||
) AS contract_criterion
|
||||
FROM vse as ri
|
||||
LEFT JOIN children_count AS cc
|
||||
ON ri.r_id = cc.recruit_id
|
||||
)
|
||||
SELECT
|
||||
total_count,
|
||||
male_count,
|
||||
female_count,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(total_registered) END AS total_count,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("total_registered_M") END AS male_count,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("total_registered_W") END AS female_count,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(mobilization_criterion) END AS mobilization_criterion,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(volunteer_criterion) END AS volunteer_criterion,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(contract_criterion) END AS contract_criterion,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_registered) > 0
|
||||
THEN ROUND((SUM(mobilization_criterion) / SUM(total_registered) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS mobilization_criterion_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_registered) > 0
|
||||
THEN ROUND((SUM(volunteer_criterion) / SUM(total_registered) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS volunteer_criterion_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_registered) > 0
|
||||
THEN ROUND((SUM(contract_criterion) / SUM(total_registered) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS contract_criterion_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
mobilization_criterion,
|
||||
volunteer_criterion,
|
||||
contract_criterion,
|
||||
ROUND(mobilization_criterion::NUMERIC / NULLIF(total_count, 0) * 100, 2) AS mobilization_criterion_percent,
|
||||
ROUND(volunteer_criterion::NUMERIC / NULLIF(total_count, 0) * 100, 2) AS volunteer_criterion_percent,
|
||||
ROUND(contract_criterion::NUMERIC / NULLIF(total_count, 0) * 100, 2) AS contract_criterion_percent
|
||||
FROM recruit_data;</sql>
|
||||
'Ministry' AS schema
|
||||
FROM main_dashboard.total_registered
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -504,57 +504,6 @@
|
|||
</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>Table input 2 (person_registry) РФ</from>
|
||||
|
|
@ -805,94 +754,61 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.person_registry</connection>
|
||||
<sql>WITH vse as (
|
||||
select *,
|
||||
r.id as r_id
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri
|
||||
ON ri.recruit_id = r.id
|
||||
WHERE r.vu_current_info ->> 'isMilitaryRegistered' = 'false'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
),
|
||||
extracted_children AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child
|
||||
FROM
|
||||
vse ri
|
||||
WHERE
|
||||
jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array'
|
||||
),
|
||||
children_birth_dates AS (
|
||||
SELECT
|
||||
recruit_id,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'den')::int AS day,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'mesyacz')::int AS month,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'god')::int AS year
|
||||
FROM
|
||||
extracted_children
|
||||
),
|
||||
children_count AS (
|
||||
SELECT
|
||||
recruit_id,
|
||||
COUNT(*) AS children_under_16
|
||||
FROM
|
||||
children_birth_dates
|
||||
WHERE
|
||||
AGE(make_date(year, month, day)) < interval '16 years'
|
||||
GROUP BY
|
||||
recruit_id
|
||||
),
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
COUNT(*) AS waiting_count,
|
||||
COUNT(*) FILTER (WHERE gender = 'MALE') AS male_count,
|
||||
COUNT(*) FILTER (WHERE gender = 'FEMALE') AS female_count,
|
||||
COUNT(*) FILTER (
|
||||
WHERE (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 70
|
||||
AND gender = 'MALE') -- мужчины от 18 до 70 лет
|
||||
OR
|
||||
(EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 45
|
||||
AND gender = 'FEMALE') -- женщины от 18 до 45 лет
|
||||
AND (conscription IS NULL OR conscription = false) -- отсутствие отсрочки
|
||||
AND COALESCE(cc.children_under_16, 0) < 5 -- исключить рекрутов с 5 и более детьми младше 16 лет
|
||||
) AS mobilization_criterion,
|
||||
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 volunteer_criterion,
|
||||
COUNT(*) FILTER (
|
||||
WHERE EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 50
|
||||
AND gender = 'MALE' -- мужчины от 18 до 50 лет
|
||||
AND (conscription IS NULL OR conscription = false) -- отсутствие отсрочки
|
||||
AND ri.info->'svedSudim'->>'prOtsSvedSudim' = '1' -- признак отсутствия данных о судимости
|
||||
) AS contract_criterion
|
||||
FROM vse as ri
|
||||
LEFT JOIN children_count AS cc
|
||||
ON ri.r_id = cc.recruit_id
|
||||
)
|
||||
SELECT
|
||||
waiting_count,
|
||||
ROUND(COALESCE((waiting_count::DECIMAL / NULLIF((SELECT COUNT(*) 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), 0) * 100), 0), 2) AS waiting_percent,
|
||||
male_count,
|
||||
female_count,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(waiting_registration) END AS waiting_count,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("waiting_registration_M") END AS male_count,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("waiting_registration_W") END AS female_count,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(mobilization_criterion) END AS mobilization_criterion,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(volunteer_criterion) END AS volunteer_criterion,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(contract_criterion) END AS contract_criterion,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(waiting_registration) > 0
|
||||
THEN ROUND((SUM(mobilization_criterion) / SUM(waiting_registration) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS mobilization_criterion_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(waiting_registration) > 0
|
||||
THEN ROUND((SUM(volunteer_criterion) / SUM(waiting_registration) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS volunteer_criterion_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(waiting_registration) > 0
|
||||
THEN ROUND((SUM(contract_criterion) / SUM(waiting_registration) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS contract_criterion_percent,
|
||||
0 AS waiting_percent, -- waiting_registration_percent
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
mobilization_criterion,
|
||||
volunteer_criterion,
|
||||
contract_criterion,
|
||||
ROUND(mobilization_criterion::NUMERIC / NULLIF(waiting_count, 0) * 100, 2) AS mobilization_criterion_percent,
|
||||
ROUND(volunteer_criterion::NUMERIC / NULLIF(waiting_count, 0) * 100, 2) AS volunteer_criterion_percent,
|
||||
ROUND(contract_criterion::NUMERIC / NULLIF(waiting_count, 0) * 100, 2) AS contract_criterion_percent
|
||||
FROM recruit_data;</sql>
|
||||
'Ministry' AS schema
|
||||
FROM main_dashboard.waiting_registration
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -504,57 +504,6 @@
|
|||
</attribute>
|
||||
</attributes>
|
||||
</connection>
|
||||
<connection>
|
||||
<name>postgres.appeal-document-service</name>
|
||||
<server>appeal-dbhost</server>
|
||||
<type>POSTGRESQL</type>
|
||||
<access>Native</access>
|
||||
<database>appeal-dbname</database>
|
||||
<port>2222</port>
|
||||
<username>appeal-dbuser</username>
|
||||
<password>Encrypted 2be98afa91ad79785a754aa72ce93bcc9</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>2222</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>Table input (appeal_document) РФ/осень</from>
|
||||
|
|
@ -1034,28 +983,51 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.appeal-document-service</connection>
|
||||
<sql>-- ad.extra_info->>'result' = '**' 1 - удовлетворена, 2 - частично удовлетворена, 3 - отказано в удовлетворении
|
||||
WITH appeals_data AS (
|
||||
SELECT
|
||||
COUNT(*) AS total_appeals,
|
||||
ROUND(AVG((TRIM(BOTH '"' FROM (ad.extra_info ->> 'resultDate')::text)::date - ad.appeal_date)), 2) AS average_consideration,
|
||||
COUNT(CASE WHEN ad.extra_info->>'result' = '1' THEN 1 END) AS resolved,
|
||||
COUNT(CASE WHEN ad.extra_info->>'result' = '3' THEN 1 END) AS not_resolved
|
||||
FROM public.appeal_document ad
|
||||
)
|
||||
SELECT
|
||||
ad.total_appeals,
|
||||
ad.average_consideration,
|
||||
ad.resolved,
|
||||
ad.not_resolved,
|
||||
ROUND(ad.resolved * 100.0 / NULLIF(ad.total_appeals, 0), 2) AS resolved_percent,
|
||||
ROUND(ad.not_resolved * 100.0 / NULLIF(ad.total_appeals, 0), 2) AS not_resolved_percent,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(total_appeals) END AS total_appeals,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average_consideration) END AS average_consideration,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(resolved) END AS resolved,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_resolved) END AS not_resolved,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_appeals) > 0
|
||||
THEN ROUND((SUM(not_resolved) / SUM(total_appeals) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_resolved_percent,
|
||||
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average_rating) END AS average_rating,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_appeals) > 0
|
||||
THEN ROUND((SUM(resolved) / SUM(total_appeals) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS resolved_percent,
|
||||
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
0 AS average_rating,
|
||||
'Весна' as spring_autumn
|
||||
FROM appeals_data AS ad;</sql>
|
||||
'Весна' AS spring_autumn,
|
||||
'Ministry' AS schema
|
||||
FROM recruitment_campaign.appeals
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND spring_autumn = 'Весна'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1086,28 +1058,51 @@ FROM appeals_data AS ad;</sql>
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.appeal-document-service</connection>
|
||||
<sql>-- ad.extra_info->>'result' = '**' 1 - удовлетворена, 2 - частично удовлетворена, 3 - отказано в удовлетворении
|
||||
WITH appeals_data AS (
|
||||
SELECT
|
||||
COUNT(*) AS total_appeals,
|
||||
ROUND(AVG((TRIM(BOTH '"' FROM (ad.extra_info ->> 'resultDate')::text)::date - ad.appeal_date)), 2) AS average_consideration,
|
||||
COUNT(CASE WHEN ad.extra_info->>'result' = '1' THEN 1 END) AS resolved,
|
||||
COUNT(CASE WHEN ad.extra_info->>'result' = '3' THEN 1 END) AS not_resolved
|
||||
FROM public.appeal_document ad
|
||||
)
|
||||
SELECT
|
||||
ad.total_appeals,
|
||||
ad.average_consideration,
|
||||
ad.resolved,
|
||||
ad.not_resolved,
|
||||
ROUND(ad.resolved * 100.0 / NULLIF(ad.total_appeals, 0), 2) AS resolved_percent,
|
||||
ROUND(ad.not_resolved * 100.0 / NULLIF(ad.total_appeals, 0), 2) AS not_resolved_percent,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(total_appeals) END AS total_appeals,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average_consideration) END AS average_consideration,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(resolved) END AS resolved,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_resolved) END AS not_resolved,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_appeals) > 0
|
||||
THEN ROUND((SUM(not_resolved) / SUM(total_appeals) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_resolved_percent,
|
||||
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average_rating) END AS average_rating,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_appeals) > 0
|
||||
THEN ROUND((SUM(resolved) / SUM(total_appeals) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS resolved_percent,
|
||||
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
0 AS average_rating,
|
||||
'Осень' as spring_autumn
|
||||
FROM appeals_data AS ad;</sql>
|
||||
'Осень' AS spring_autumn,
|
||||
'Ministry' AS schema
|
||||
FROM recruitment_campaign.appeals
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND spring_autumn = 'Осень'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -491,57 +491,6 @@
|
|||
</attribute>
|
||||
</attributes>
|
||||
</connection>
|
||||
<connection>
|
||||
<name>postgres.subpoena</name>
|
||||
<server>subpoena-dbhost</server>
|
||||
<type>POSTGRESQL</type>
|
||||
<access>Native</access>
|
||||
<database>subpoena-dbname</database>
|
||||
<port>5555</port>
|
||||
<username>subpoena-dbuser</username>
|
||||
<password>Encrypted 2beebdaaa1ac8978aaa54aa72ce93bcc9</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>5555</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>Table input (subpoena) Весна/РФ</from>
|
||||
|
|
@ -1131,145 +1080,138 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
ssh.code AS sub_stat_hist,
|
||||
s.send_date,
|
||||
sh.date_time::timestamp AS history_date,
|
||||
rdi.restriction_document_cancel_id AS restr_dc,
|
||||
rdi.applied_date AS ap_date,
|
||||
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 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 (
|
||||
SELECT *
|
||||
FROM subpoena_data
|
||||
WHERE rn = 1 -- выбираем только последнюю запись для каждой повестки
|
||||
),
|
||||
-- Подсчет различных метрик
|
||||
t1 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_subpoena
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IS NOT NULL
|
||||
),
|
||||
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 IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '5'
|
||||
),
|
||||
t5 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_ap_good_reason
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '5.1'
|
||||
),
|
||||
t6 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_ap_not_required
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3.8', '5.2')
|
||||
),
|
||||
t7 AS ( -- количество повесток по которым применены ограничения
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_restrictions_applied
|
||||
FROM last_status
|
||||
WHERE restr_dc IS NULL
|
||||
),
|
||||
t8 AS ( -- количество повесток по которым введены меры
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_introduced_measures
|
||||
FROM last_status
|
||||
WHERE restr_dc IS NULL AND ap_date IS NOT NULL
|
||||
),
|
||||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
FROM last_status
|
||||
WHERE d_code = '7'
|
||||
),
|
||||
t11 AS (
|
||||
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
|
||||
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,
|
||||
t10.count_electron,
|
||||
t11.count_restrictions,
|
||||
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, --процент не врученных
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(subpoena) END AS count_subpoena,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(appeared) END AS count_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_appeared) END AS count_not_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_ap_good_reason) END AS count_not_ap_good_reason,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(introduced_measures) END AS count_introduced_measures,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(ap_not_required) END AS count_ap_not_required,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(restrictions_applied) END AS count_restrictions_applied,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(appeared) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS appeared_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(not_appeared) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_appeared_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(not_ap_good_reason) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_ap_good_reason_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(ap_not_required) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS ap_not_required_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(restrictions_applied) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS restrictions_applied_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(introduced_measures) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS introduced_measures_percent,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(rest) END AS rest,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(count_not_delivery) END AS count_not_delivery,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(appear_date_is_good) END AS appear_date_is_good,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(count_not_delivery) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_delivery_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(count_not_delivery) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_delivery_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(appear_date_is_good) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS appear_date_is_good_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
0 as rest,
|
||||
'Весна' as spring_autumn,
|
||||
1 AS org
|
||||
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
|
||||
FULL OUTER JOIN t12 ON 1 = 1
|
||||
FULL OUTER JOIN t13 ON 1 = 1;
|
||||
</sql>
|
||||
'Весна' AS spring_autumn,
|
||||
'Ministry' AS schema
|
||||
FROM recruitment_campaign.subpoenas
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND spring_autumn = 'Весна'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1300,145 +1242,138 @@ FULL OUTER JOIN t13 ON 1 = 1;
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
ssh.code AS sub_stat_hist,
|
||||
s.send_date,
|
||||
sh.date_time::timestamp AS history_date,
|
||||
rdi.restriction_document_cancel_id AS restr_dc,
|
||||
rdi.applied_date AS ap_date,
|
||||
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 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 (
|
||||
SELECT *
|
||||
FROM subpoena_data
|
||||
WHERE rn = 1 -- выбираем только последнюю запись для каждой повестки
|
||||
),
|
||||
-- Подсчет различных метрик
|
||||
t1 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_subpoena
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IS NOT NULL
|
||||
),
|
||||
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 IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '5'
|
||||
),
|
||||
t5 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_ap_good_reason
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '5.1'
|
||||
),
|
||||
t6 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_ap_not_required
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3.8', '5.2')
|
||||
),
|
||||
t7 AS ( -- количество повесток по которым применены ограничения
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_restrictions_applied
|
||||
FROM last_status
|
||||
WHERE restr_dc IS NULL
|
||||
),
|
||||
t8 AS ( -- количество повесток по которым введены меры
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_introduced_measures
|
||||
FROM last_status
|
||||
WHERE restr_dc IS NULL AND ap_date IS NOT NULL
|
||||
),
|
||||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
FROM last_status
|
||||
WHERE d_code = '7'
|
||||
),
|
||||
t11 AS (
|
||||
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
|
||||
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,
|
||||
t10.count_electron,
|
||||
t11.count_restrictions,
|
||||
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, --процент не врученных
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(subpoena) END AS count_subpoena,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(appeared) END AS count_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_appeared) END AS count_not_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_ap_good_reason) END AS count_not_ap_good_reason,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(introduced_measures) END AS count_introduced_measures,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(ap_not_required) END AS count_ap_not_required,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(restrictions_applied) END AS count_restrictions_applied,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(appeared) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS appeared_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(not_appeared) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_appeared_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(not_ap_good_reason) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_ap_good_reason_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(ap_not_required) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS ap_not_required_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(restrictions_applied) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS restrictions_applied_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(introduced_measures) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS introduced_measures_percent,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(rest) END AS rest,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(count_not_delivery) END AS count_not_delivery,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(appear_date_is_good) END AS appear_date_is_good,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(count_not_delivery) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_delivery_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(count_not_delivery) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_delivery_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(appear_date_is_good) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS appear_date_is_good_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
0 as rest,
|
||||
'Осень' as spring_autumn,
|
||||
1 AS org
|
||||
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
|
||||
FULL OUTER JOIN t12 ON 1 = 1
|
||||
FULL OUTER JOIN t13 ON 1 = 1;
|
||||
</sql>
|
||||
'Осень' AS spring_autumn,
|
||||
'Ministry' AS schema
|
||||
FROM recruitment_campaign.subpoenas
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND spring_autumn = 'Осень'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -536,9 +536,10 @@
|
|||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>WITH
|
||||
t1 AS (SELECT ARRAY_AGG(t.idm_id) AS RECRUITMENT00_ID FROM ervu_dashboard.recruitment AS t WHERE t.code = '0000000')
|
||||
t1 AS (SELECT array_agg(recruitment_dstr_id) AS RECRUITMENT_COUNTRY_ID
|
||||
FROM ervu_dashboard.array_mildis)
|
||||
SELECT
|
||||
t1.RECRUITMENT00_ID AS VK_ARRAY_ID,
|
||||
t1.RECRUITMENT_COUNTRY_ID AS VK_ARRAY_ID,
|
||||
'f03fc8c0-2ce7-4121-a306-f82d65ea029d' AS RECRUITMENT_REG_ID
|
||||
FROM t1
|
||||
</sql>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -504,57 +504,6 @@
|
|||
</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>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry)РФ/женщины</from>
|
||||
|
|
@ -1312,71 +1261,86 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu_person_registry</connection>
|
||||
<sql>WITH extracted_children AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child
|
||||
FROM
|
||||
public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE
|
||||
jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array'
|
||||
AND r.vu_current_info->>'isMilitaryRegistered' = 'true' and r.current_recruitment_id is not null and r.target_recruitment_id is not null
|
||||
),
|
||||
children_birth_dates AS (
|
||||
SELECT
|
||||
recruit_id,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'den')::int AS day,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'mesyacz')::int AS month,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'god')::int AS year
|
||||
FROM
|
||||
extracted_children
|
||||
),
|
||||
children_count AS (
|
||||
SELECT
|
||||
recruit_id,
|
||||
COUNT(*) AS children_under_18
|
||||
FROM
|
||||
children_birth_dates
|
||||
WHERE
|
||||
AGE(make_date(year, month, day)) < interval '18 years'
|
||||
GROUP BY
|
||||
recruit_id
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
COALESCE(children_under_18, 0) AS children_count,
|
||||
COUNT(*) AS num_people
|
||||
FROM
|
||||
public.recruits_info ri
|
||||
LEFT JOIN
|
||||
children_count cc ON ri.recruit_id = cc.recruit_id
|
||||
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
|
||||
GROUP BY
|
||||
COALESCE(children_under_18, 0)
|
||||
),
|
||||
total_people AS (
|
||||
SELECT SUM(num_people) AS total_count
|
||||
FROM final_counts
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(total_count) END AS total_count,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(no_child) END AS no_children,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("1_child") END AS one_child,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("2_child") END AS two_children,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("3_child") END AS three_children,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("4_more_child") END AS four_or_more_children,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM(no_child) / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS no_children_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("1_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS one_child_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("2_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS two_children_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("3_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS three_children_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("4_more_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS four_or_more_children_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'ALL' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.child_minor
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
'${REG_ID}' as recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
COALESCE(SUM(CASE WHEN children_count = 0 THEN num_people ELSE 0 END), 0) AS no_children,
|
||||
COALESCE(SUM(CASE WHEN children_count = 1 THEN num_people ELSE 0 END), 0) AS one_child,
|
||||
COALESCE(SUM(CASE WHEN children_count = 2 THEN num_people ELSE 0 END), 0) AS two_children,
|
||||
COALESCE(SUM(CASE WHEN children_count = 3 THEN num_people ELSE 0 END), 0) AS three_children,
|
||||
COALESCE(SUM(CASE WHEN children_count >= 4 THEN num_people ELSE 0 END), 0) AS four_or_more_children,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 0 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_count FROM total_people), 0), 2) AS no_children_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 1 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_count FROM total_people), 0), 2) AS one_child_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 2 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_count FROM total_people), 0), 2) AS two_children_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 3 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_count FROM total_people), 0), 2) AS three_children_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count >= 4 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_count FROM total_people), 0), 2) AS four_or_more_children_percent
|
||||
FROM
|
||||
final_counts;</sql>
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'ALL'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1407,86 +1371,86 @@ FROM
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu_person_registry</connection>
|
||||
<sql>WITH extracted_children AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child
|
||||
FROM
|
||||
public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE
|
||||
jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array'
|
||||
AND r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
AND r.gender = 'FEMALE'
|
||||
),
|
||||
children_birth_dates AS (
|
||||
SELECT
|
||||
recruit_id,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'den')::int AS day,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'mesyacz')::int AS month,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'god')::int AS year
|
||||
FROM
|
||||
extracted_children
|
||||
),
|
||||
children_count AS (
|
||||
SELECT
|
||||
recruit_id,
|
||||
COUNT(*) AS children_under_18
|
||||
FROM
|
||||
children_birth_dates
|
||||
WHERE
|
||||
make_date(year, month, day) > CURRENT_DATE - INTERVAL '18 years'
|
||||
GROUP BY
|
||||
recruit_id
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
COALESCE(children_under_18, 0) AS children_count,
|
||||
COUNT(*) AS num_people
|
||||
FROM
|
||||
public.recruits_info ri
|
||||
LEFT JOIN
|
||||
children_count cc ON ri.recruit_id = cc.recruit_id
|
||||
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
|
||||
AND r.gender = 'FEMALE'
|
||||
GROUP BY
|
||||
COALESCE(children_under_18, 0)
|
||||
),
|
||||
total_men AS (
|
||||
SELECT
|
||||
COUNT(*) AS total_men_count
|
||||
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
|
||||
AND r.gender = 'FEMALE'
|
||||
)
|
||||
SELECT
|
||||
'W' AS gender,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(total_count) END AS total_count,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(no_child) END AS no_children,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("1_child") END AS one_child,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("2_child") END AS two_children,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("3_child") END AS three_children,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("4_more_child") END AS four_or_more_children,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM(no_child) / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS no_children_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("1_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS one_child_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("2_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS two_children_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("3_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS three_children_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("4_more_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS four_or_more_children_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
COALESCE(SUM(CASE WHEN children_count = 0 THEN num_people ELSE 0 END), 0) AS no_children,
|
||||
COALESCE(SUM(CASE WHEN children_count = 1 THEN num_people ELSE 0 END), 0) AS one_child,
|
||||
COALESCE(SUM(CASE WHEN children_count = 2 THEN num_people ELSE 0 END), 0) AS two_children,
|
||||
COALESCE(SUM(CASE WHEN children_count = 3 THEN num_people ELSE 0 END), 0) AS three_children,
|
||||
COALESCE(SUM(CASE WHEN children_count >= 4 THEN num_people ELSE 0 END), 0) AS four_or_more_children,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 0 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_men_count FROM total_men), 0), 2) AS no_children_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 1 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_men_count FROM total_men), 0), 2) AS one_child_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 2 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_men_count FROM total_men), 0), 2) AS two_children_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 3 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_men_count FROM total_men), 0), 2) AS three_children_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count >= 4 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_men_count FROM total_men), 0), 2) AS four_or_more_children_percent
|
||||
FROM
|
||||
final_counts;</sql>
|
||||
'W' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.child_minor
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'W'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1517,86 +1481,86 @@ FROM
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu_person_registry</connection>
|
||||
<sql>WITH extracted_children AS (
|
||||
SELECT
|
||||
ri.recruit_id,
|
||||
jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child
|
||||
FROM
|
||||
public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
WHERE
|
||||
jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array'
|
||||
AND r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
AND r.gender = 'MALE'
|
||||
),
|
||||
children_birth_dates AS (
|
||||
SELECT
|
||||
recruit_id,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'den')::int AS day,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'mesyacz')::int AS month,
|
||||
(child::jsonb->'svedFLBS'->'dataRozhdDok'->>'god')::int AS year
|
||||
FROM
|
||||
extracted_children
|
||||
),
|
||||
children_count AS (
|
||||
SELECT
|
||||
recruit_id,
|
||||
COUNT(*) AS children_under_18
|
||||
FROM
|
||||
children_birth_dates
|
||||
WHERE
|
||||
make_date(year, month, day) > CURRENT_DATE - INTERVAL '18 years'
|
||||
GROUP BY
|
||||
recruit_id
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
COALESCE(children_under_18, 0) AS children_count,
|
||||
COUNT(*) AS num_people
|
||||
FROM
|
||||
public.recruits_info ri
|
||||
LEFT JOIN
|
||||
children_count cc ON ri.recruit_id = cc.recruit_id
|
||||
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
|
||||
AND r.gender = 'MALE'
|
||||
GROUP BY
|
||||
COALESCE(children_under_18, 0)
|
||||
),
|
||||
total_men AS (
|
||||
SELECT
|
||||
COUNT(*) AS total_men_count
|
||||
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
|
||||
AND r.gender = 'MALE'
|
||||
)
|
||||
SELECT
|
||||
'M' AS gender,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(total_count) END AS total_count,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(no_child) END AS no_children,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("1_child") END AS one_child,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("2_child") END AS two_children,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("3_child") END AS three_children,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("4_more_child") END AS four_or_more_children,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM(no_child) / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS no_children_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("1_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS one_child_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("2_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS two_children_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("3_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS three_children_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("4_more_child") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS four_or_more_children_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
COALESCE(SUM(CASE WHEN children_count = 0 THEN num_people ELSE 0 END), 0) AS no_children,
|
||||
COALESCE(SUM(CASE WHEN children_count = 1 THEN num_people ELSE 0 END), 0) AS one_child,
|
||||
COALESCE(SUM(CASE WHEN children_count = 2 THEN num_people ELSE 0 END), 0) AS two_children,
|
||||
COALESCE(SUM(CASE WHEN children_count = 3 THEN num_people ELSE 0 END), 0) AS three_children,
|
||||
COALESCE(SUM(CASE WHEN children_count >= 4 THEN num_people ELSE 0 END), 0) AS four_or_more_children,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 0 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_men_count FROM total_men), 0), 2) AS no_children_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 1 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_men_count FROM total_men), 0), 2) AS one_child_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 2 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_men_count FROM total_men), 0), 2) AS two_children_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count = 3 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_men_count FROM total_men), 0), 2) AS three_children_percent,
|
||||
ROUND(COALESCE(SUM(CASE WHEN children_count >= 4 THEN num_people ELSE 0 END), 0) * 100.0 / NULLIF((SELECT total_men_count FROM total_men), 0), 2) AS four_or_more_children_percent
|
||||
FROM
|
||||
final_counts;</sql>
|
||||
'M' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.child_minor
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'M'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -504,57 +504,6 @@
|
|||
</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>Table input (person_registry) РФ/женщины</from>
|
||||
|
|
@ -1327,48 +1276,99 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.person_registry</connection>
|
||||
<sql>WITH categorized AS (
|
||||
SELECT
|
||||
r.id,
|
||||
r.gender,
|
||||
-- Проверяем наличие хотя бы одной категории, используем DISTINCT для уникальных рекрутов
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%A%' THEN 1 ELSE 0 END) AS has_A,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%B%' THEN 1 ELSE 0 END) AS has_B,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%C%' THEN 1 ELSE 0 END) AS has_C,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%D%' THEN 1 ELSE 0 END) AS has_D,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%E%' THEN 1 ELSE 0 END) AS has_E
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
LEFT JOIN jsonb_array_elements(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') AS cat ON true
|
||||
WHERE r.vu_current_info->>'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
GROUP BY r.id, r.gender
|
||||
),
|
||||
aggregated AS (
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
-- Считаем количество уникальных рекрутов с каждой категорией
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_A > 0) AS a,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_B > 0) AS b,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_C > 0) AS c,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_D > 0) AS d,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_E > 0) AS e,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_A = 0 AND has_B = 0 AND has_C = 0 AND has_D = 0 AND has_E = 0) AS nope,
|
||||
COUNT(DISTINCT r.id) AS total
|
||||
FROM categorized r
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(total_count) END AS total,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("A") END AS a,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("B") END AS b,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("C") END AS c,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("D") END AS d,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("E") END AS e,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(nope) END AS nope,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("A") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS a_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("B") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS b_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("C") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS c_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("D") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS d_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("E") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS e_percent, -- нет такой категории
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM(nope) / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS nope_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'ALL' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.driver_license
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
SELECT *,
|
||||
ROUND((a * 100.0) / NULLIF(total, 0), 2) AS a_percent,
|
||||
ROUND((b * 100.0) / NULLIF(total, 0), 2) AS b_percent,
|
||||
ROUND((c * 100.0) / NULLIF(total, 0), 2) AS c_percent,
|
||||
ROUND((d * 100.0) / NULLIF(total, 0), 2) AS d_percent,
|
||||
ROUND((e * 100.0) / NULLIF(total, 0), 2) AS e_percent,
|
||||
ROUND((nope * 100.0) / NULLIF(total, 0), 2) AS nope_percent
|
||||
FROM aggregated;</sql>
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'ALL'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1399,49 +1399,99 @@ FROM aggregated;</sql>
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.person_registry</connection>
|
||||
<sql>WITH categorized AS (
|
||||
SELECT
|
||||
r.id,
|
||||
r.gender,
|
||||
-- Проверяем наличие хотя бы одной категории, используем DISTINCT для уникальных рекрутов
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%A%' THEN 1 ELSE 0 END) AS has_A,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%B%' THEN 1 ELSE 0 END) AS has_B,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%C%' THEN 1 ELSE 0 END) AS has_C,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%D%' THEN 1 ELSE 0 END) AS has_D,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%E%' THEN 1 ELSE 0 END) AS has_E
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
LEFT JOIN jsonb_array_elements(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') AS cat ON true
|
||||
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'
|
||||
GROUP BY r.id, r.gender
|
||||
),
|
||||
aggregated AS (
|
||||
SELECT
|
||||
'W' AS gender,
|
||||
'${REG_ID}' as recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
-- Считаем количество уникальных рекрутов с каждой категорией
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_A > 0) AS a,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_B > 0) AS b,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_C > 0) AS c,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_D > 0) AS d,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_E > 0) AS e,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_A = 0 AND has_B = 0 AND has_C = 0 AND has_D = 0 AND has_E = 0) AS nope,
|
||||
COUNT(DISTINCT r.id) AS total
|
||||
FROM categorized r
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(total_count) END AS total,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("A") END AS a,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("B") END AS b,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("C") END AS c,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("D") END AS d,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("E") END AS e,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(nope) END AS nope,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("A") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS a_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("B") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS b_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("C") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS c_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("D") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS d_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("E") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS e_percent, -- нет такой категории
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM(nope) / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS nope_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'W' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.driver_license
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
SELECT *,
|
||||
ROUND((a * 100.0) / NULLIF(total, 0), 2) AS a_percent,
|
||||
ROUND((b * 100.0) / NULLIF(total, 0), 2) AS b_percent,
|
||||
ROUND((c * 100.0) / NULLIF(total, 0), 2) AS c_percent,
|
||||
ROUND((d * 100.0) / NULLIF(total, 0), 2) AS d_percent,
|
||||
ROUND((e * 100.0) / NULLIF(total, 0), 2) AS e_percent,
|
||||
ROUND((nope * 100.0) / NULLIF(total, 0), 2) AS nope_percent
|
||||
FROM aggregated;</sql>
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'W'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1472,49 +1522,99 @@ FROM aggregated;</sql>
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.person_registry</connection>
|
||||
<sql>WITH categorized AS (
|
||||
SELECT
|
||||
r.id,
|
||||
r.gender,
|
||||
-- Проверяем наличие хотя бы одной категории, используем DISTINCT для уникальных рекрутов
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%A%' THEN 1 ELSE 0 END) AS has_A,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%B%' THEN 1 ELSE 0 END) AS has_B,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%C%' THEN 1 ELSE 0 END) AS has_C,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%D%' THEN 1 ELSE 0 END) AS has_D,
|
||||
MAX(CASE WHEN cat->>'kategoriya' like '%E%' THEN 1 ELSE 0 END) AS has_E
|
||||
FROM public.recruits_info ri
|
||||
JOIN public.recruits r ON ri.recruit_id = r.id
|
||||
LEFT JOIN jsonb_array_elements(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') AS cat ON true
|
||||
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'
|
||||
GROUP BY r.id, r.gender
|
||||
),
|
||||
aggregated AS (
|
||||
SELECT
|
||||
'M' AS gender,
|
||||
'${REG_ID}' as recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
-- Считаем количество уникальных рекрутов с каждой категорией
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_A > 0) AS a,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_B > 0) AS b,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_C > 0) AS c,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_D > 0) AS d,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_E > 0) AS e,
|
||||
COUNT(DISTINCT r.id) FILTER (WHERE has_A = 0 AND has_B = 0 AND has_C = 0 AND has_D = 0 AND has_E = 0) AS nope,
|
||||
COUNT(DISTINCT r.id) AS total
|
||||
FROM categorized r
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(total_count) END AS total,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("A") END AS a,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("B") END AS b,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("C") END AS c,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("D") END AS d,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM("E") END AS e,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(nope) END AS nope,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("A") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS a_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("B") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS b_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("C") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS c_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("D") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS d_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM("E") / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS e_percent, -- нет такой категории
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(total_count) > 0
|
||||
THEN ROUND((SUM(nope) / SUM(total_count) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS nope_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'M' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.driver_license
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
SELECT *,
|
||||
ROUND((a * 100.0) / NULLIF(total, 0), 2) AS a_percent,
|
||||
ROUND((b * 100.0) / NULLIF(total, 0), 2) AS b_percent,
|
||||
ROUND((c * 100.0) / NULLIF(total, 0), 2) AS c_percent,
|
||||
ROUND((d * 100.0) / NULLIF(total, 0), 2) AS d_percent,
|
||||
ROUND((e * 100.0) / NULLIF(total, 0), 2) AS e_percent,
|
||||
ROUND((nope * 100.0) / NULLIF(total, 0), 2) AS nope_percent
|
||||
FROM aggregated;</sql>
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'M'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -504,57 +504,6 @@
|
|||
</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>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/все</from>
|
||||
|
|
@ -1297,112 +1246,74 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu_person_registry</connection>
|
||||
<sql>WITH total_count AS (
|
||||
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
|
||||
),
|
||||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(higher) END AS higher,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average) END AS average_prof,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(only_general) END AS only_general,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(no_data) END AS count_nodata,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(higher) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS higher_percentage,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(average) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS average_prof_percentage,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(only_general) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS only_general_percentage,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(no_data) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS count_nodata_percentage,
|
||||
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
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'
|
||||
)
|
||||
) 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')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
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
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
COUNT(DISTINCT CASE WHEN has_higher THEN id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT has_higher AND has_average_prof THEN id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT has_higher AND NOT has_average_prof AND has_only_general THEN id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN has_no_data THEN id END) AS count_nodata
|
||||
FROM education_status
|
||||
)
|
||||
SELECT
|
||||
'ALL' AS gender,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(education_level) END AS total,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
higher,
|
||||
average_prof,
|
||||
only_general,
|
||||
count_nodata,
|
||||
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,
|
||||
ROUND(count_nodata * 100.0 / NULLIF(total_count.total, 0), 2) AS count_nodata_percentage
|
||||
FROM final_counts, total_count;</sql>
|
||||
'ALL' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.education_level
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'ALL'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1433,114 +1344,74 @@ FROM final_counts, total_count;</sql>
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu_person_registry</connection>
|
||||
<sql>WITH total_count AS (
|
||||
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
|
||||
AND r.gender = 'FEMALE'
|
||||
),
|
||||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(higher) END AS higher,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average) END AS average_prof,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(only_general) END AS only_general,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(no_data) END AS count_nodata,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(higher) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS higher_percentage,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(average) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS average_prof_percentage,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(only_general) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS only_general_percentage,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(no_data) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS count_nodata_percentage,
|
||||
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
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'
|
||||
)
|
||||
) 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')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
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
|
||||
AND r.gender = 'FEMALE'
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
COUNT(DISTINCT CASE WHEN has_higher THEN id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT has_higher AND has_average_prof THEN id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT has_higher AND NOT has_average_prof AND has_only_general THEN id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN has_no_data THEN id END) AS count_nodata
|
||||
FROM education_status
|
||||
)
|
||||
SELECT
|
||||
'W' AS gender,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(education_level) END AS total,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
higher,
|
||||
average_prof,
|
||||
only_general,
|
||||
count_nodata,
|
||||
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,
|
||||
ROUND(count_nodata * 100.0 / NULLIF(total_count.total, 0), 2) AS count_nodata_percentage
|
||||
FROM final_counts, total_count;</sql>
|
||||
'W' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.education_level
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'W'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1571,114 +1442,74 @@ FROM final_counts, total_count;</sql>
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu_person_registry</connection>
|
||||
<sql>WITH total_count AS (
|
||||
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
|
||||
AND r.gender = 'MALE'
|
||||
),
|
||||
education_status AS (
|
||||
SELECT
|
||||
ri.id,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(higher) END AS higher,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average) END AS average_prof,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(only_general) END AS only_general,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(no_data) END AS count_nodata,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(higher) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS higher_percentage,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(average) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS average_prof_percentage,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(only_general) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS only_general_percentage,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(education_level) > 0
|
||||
THEN ROUND((SUM(no_data) / SUM(education_level) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS count_nodata_percentage,
|
||||
|
||||
-- Высшее образование (российское или иностранное)
|
||||
(
|
||||
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'
|
||||
)
|
||||
) 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')
|
||||
)
|
||||
) AS has_only_general,
|
||||
|
||||
-- Нет данных об образовании (российское или иностранное)
|
||||
(
|
||||
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
|
||||
AND r.gender = 'MALE'
|
||||
),
|
||||
final_counts AS (
|
||||
SELECT
|
||||
COUNT(DISTINCT CASE WHEN has_higher THEN id END) AS higher,
|
||||
COUNT(DISTINCT CASE WHEN NOT has_higher AND has_average_prof THEN id END) AS average_prof,
|
||||
COUNT(DISTINCT CASE WHEN NOT has_higher AND NOT has_average_prof AND has_only_general THEN id END) AS only_general,
|
||||
COUNT(DISTINCT CASE WHEN has_no_data THEN id END) AS count_nodata
|
||||
FROM education_status
|
||||
)
|
||||
SELECT
|
||||
'M' AS gender,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(education_level) END AS total,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
higher,
|
||||
average_prof,
|
||||
only_general,
|
||||
count_nodata,
|
||||
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,
|
||||
ROUND(count_nodata * 100.0 / NULLIF(total_count.total, 0), 2) AS count_nodata_percentage
|
||||
FROM final_counts, total_count;</sql>
|
||||
'M' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.education_level
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'M'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -504,57 +504,6 @@
|
|||
</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>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/все</from>
|
||||
|
|
@ -1237,50 +1186,47 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu_person_registry</connection>
|
||||
<sql>SELECT
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('Вдова/Вдовец', 'В разводе')
|
||||
OR ri.info->'svedSemPolozh'->'semPolozhNaim' IS NULL
|
||||
) AS not_married,
|
||||
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('В браке')
|
||||
) AS married,
|
||||
|
||||
COUNT(*) AS total,
|
||||
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 0
|
||||
ELSE ROUND(
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('Вдова/Вдовец', 'В разводе')
|
||||
OR ri.info->'svedSemPolozh'->'semPolozhNaim' IS NULL
|
||||
) * 100.0 / COUNT(*), 2
|
||||
) END AS not_married_percent,
|
||||
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 0
|
||||
ELSE ROUND(
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('В браке')
|
||||
) * 100.0 / COUNT(*), 2
|
||||
) END AS married_percent,
|
||||
'ALL' as gender,
|
||||
'Ministry' AS schema,
|
||||
'${REG_ID}' as recruitment_id
|
||||
|
||||
FROM
|
||||
public.recruits r
|
||||
JOIN
|
||||
public.recruits_info ri ON ri.recruit_id = r.id
|
||||
WHERE
|
||||
r.current_recruitment_id IS NOT NULL
|
||||
AND r.vu_current_info->>'isMilitaryRegistered' = 'true' and r.current_recruitment_id is not null and r.target_recruitment_id is not null</sql>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(married) END AS married,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_married) END AS not_married,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(marital_status) > 0
|
||||
THEN ROUND((SUM(married) / SUM(marital_status) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS married_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(marital_status) > 0
|
||||
THEN ROUND((SUM(not_married) / SUM(marital_status) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_married_percent,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(marital_status) END AS total,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'ALL' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.marital_status
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'ALL'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1311,52 +1257,47 @@ WHERE
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu_person_registry</connection>
|
||||
<sql> SELECT
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('Вдова/Вдовец', 'В разводе')
|
||||
OR ri.info->'svedSemPolozh'->'semPolozhNaim' IS NULL
|
||||
) AS not_married,
|
||||
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('В браке')
|
||||
) AS married,
|
||||
|
||||
COUNT(*) AS total,
|
||||
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 0
|
||||
ELSE ROUND(
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('Вдова/Вдовец', 'В разводе')
|
||||
OR ri.info->'svedSemPolozh'->'semPolozhNaim' IS NULL
|
||||
) * 100.0 / COUNT(*), 2
|
||||
) END AS not_married_percent,
|
||||
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 0
|
||||
ELSE ROUND(
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('В браке')
|
||||
) * 100.0 / COUNT(*), 2
|
||||
) END AS married_percent,
|
||||
'W' as gender,
|
||||
'Ministry' AS schema,
|
||||
'${REG_ID}' as recruitment_id
|
||||
|
||||
FROM
|
||||
public.recruits r
|
||||
JOIN
|
||||
public.recruits_info ri ON ri.recruit_id = r.id
|
||||
WHERE
|
||||
r.current_recruitment_id IS NOT NULL
|
||||
AND 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';
|
||||
</sql>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(married) END AS married,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_married) END AS not_married,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(marital_status) > 0
|
||||
THEN ROUND((SUM(married) / SUM(marital_status) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS married_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(marital_status) > 0
|
||||
THEN ROUND((SUM(not_married) / SUM(marital_status) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_married_percent,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(marital_status) END AS total,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'W' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.marital_status
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'W'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1387,52 +1328,47 @@ WHERE
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu_person_registry</connection>
|
||||
<sql>SELECT
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('Вдова/Вдовец', 'В разводе')
|
||||
OR ri.info->'svedSemPolozh'->'semPolozhNaim' IS NULL
|
||||
) AS not_married,
|
||||
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('В браке')
|
||||
) AS married,
|
||||
|
||||
COUNT(*) AS total,
|
||||
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 0
|
||||
ELSE ROUND(
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('Вдова/Вдовец', 'В разводе')
|
||||
OR ri.info->'svedSemPolozh'->'semPolozhNaim' IS NULL
|
||||
) * 100.0 / COUNT(*), 2
|
||||
) END AS not_married_percent,
|
||||
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN 0
|
||||
ELSE ROUND(
|
||||
COUNT(*) FILTER (
|
||||
WHERE
|
||||
ri.info->'svedSemPolozh'->>'semPolozhNaim' IN ('В браке')
|
||||
) * 100.0 / COUNT(*), 2
|
||||
) END AS married_percent,
|
||||
'M' as gender,
|
||||
'Ministry' AS schema,
|
||||
'${REG_ID}' as recruitment_id
|
||||
|
||||
FROM
|
||||
public.recruits r
|
||||
JOIN
|
||||
public.recruits_info ri ON ri.recruit_id = r.id
|
||||
WHERE
|
||||
r.current_recruitment_id IS NOT NULL
|
||||
AND 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';
|
||||
</sql>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(married) END AS married,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_married) END AS not_married,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(marital_status) > 0
|
||||
THEN ROUND((SUM(married) / SUM(marital_status) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS married_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(marital_status) > 0
|
||||
THEN ROUND((SUM(not_married) / SUM(marital_status) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_married_percent,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(marital_status) END AS total,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'M' AS gender,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.marital_status
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND "all_M_W" = 'M'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -504,57 +504,6 @@
|
|||
</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>
|
||||
<order>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/на учете</from>
|
||||
|
|
@ -1084,89 +1033,98 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu_person_registry</connection>
|
||||
<sql>WITH base_data AS (
|
||||
-- Основной набор данных
|
||||
SELECT
|
||||
r.registration_reasons,
|
||||
r.gender,
|
||||
r.vu_current_info ->> 'isMilitaryRegistered' AS is_military_registered
|
||||
FROM public.recruits r
|
||||
WHERE r.vu_current_info ->> 'isMilitaryRegistered' = 'true'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
),
|
||||
total AS (
|
||||
-- Общее количество записей
|
||||
SELECT COUNT(*) AS total_count
|
||||
FROM base_data
|
||||
),
|
||||
t1 AS (
|
||||
-- Первоначальная постановка 17 лет
|
||||
SELECT COUNT(*) AS first_reg_17
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"5"'
|
||||
),
|
||||
t2 AS (
|
||||
-- Первоначальная постановка 18 лет
|
||||
SELECT COUNT(*) AS first_reg_18
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"6"'
|
||||
OR registration_reasons @> '"3"'
|
||||
OR registration_reasons @> '"1"'
|
||||
OR registration_reasons @> '"4"'
|
||||
OR registration_reasons @> '"2"'
|
||||
),
|
||||
t3 AS (
|
||||
-- Женщины, получившие ВУС
|
||||
SELECT COUNT(*) AS mil_spec_w
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"3"' AND gender = 'FEMALE'
|
||||
),
|
||||
t4 AS (
|
||||
-- Возвратившиеся из мест лишения свободы
|
||||
SELECT COUNT(*) AS returned_dep_liberty
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"1"'
|
||||
),
|
||||
t5 AS (
|
||||
-- Отбывающие наказание в местах лишения свободы
|
||||
SELECT COUNT(*) AS punished
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"4"'
|
||||
),
|
||||
t6 AS (
|
||||
-- Получившие гражданство
|
||||
SELECT COUNT(*) AS received_citizenship
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"2"'
|
||||
)
|
||||
SELECT
|
||||
total.total_count,
|
||||
t1.first_reg_17,
|
||||
t2.first_reg_18,
|
||||
t3.mil_spec_w,
|
||||
t4.returned_dep_liberty,
|
||||
t5.punished,
|
||||
t6.received_citizenship,
|
||||
-- Вычисление процентов
|
||||
ROUND(t1.first_reg_17 * 100.0 / NULLIF(total.total_count, 0), 2) AS first_reg_17_percent,
|
||||
ROUND(t2.first_reg_18 * 100.0 / NULLIF(total.total_count, 0), 2) AS first_reg_18_percent,
|
||||
ROUND(t4.returned_dep_liberty * 100.0 / NULLIF(total.total_count, 0), 2) AS returned_dep_liberty_percent,
|
||||
ROUND(t3.mil_spec_w * 100.0 / NULLIF(total.total_count, 0), 2) AS mil_spec_w_percent,
|
||||
ROUND(t5.punished * 100.0 / NULLIF(total.total_count, 0), 2) AS punished_percent,
|
||||
ROUND(t6.received_citizenship * 100.0 / NULLIF(total.total_count, 0), 2) AS received_citizenship_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM(first_reg_17), 0) END AS first_reg_17,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM(first_reg_18), 0) END AS first_reg_18,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM("mil_spec_W"), 0) END AS mil_spec_w,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM(returned_dep_liberty), 0) END AS returned_dep_liberty,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM(punished), 0) END AS punished,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM(received_citizenship), 0) END AS received_citizenship,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM(first_reg_17) / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS first_reg_17_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM(first_reg_18) / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS first_reg_18_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM(returned_dep_liberty) / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS returned_dep_liberty_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM("mil_spec_W") / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS mil_spec_w_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM(punished) / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS punished_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM(received_citizenship) / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS received_citizenship_percent,
|
||||
'${REG_ID}'::uuid AS recruitment_id,
|
||||
1 AS mil_reg,
|
||||
1 AS org
|
||||
FROM total
|
||||
FULL OUTER JOIN t1 ON 1 = 1
|
||||
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;</sql>
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.reg_mil_cat
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND mil_reg = 1
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1197,89 +1155,98 @@ FULL OUTER JOIN t6 ON 1 = 1;</sql>
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu_person_registry</connection>
|
||||
<sql>WITH base_data AS (
|
||||
-- Основной набор данных
|
||||
SELECT
|
||||
r.registration_reasons,
|
||||
r.gender,
|
||||
r.vu_current_info ->> 'isMilitaryRegistered' AS is_military_registered
|
||||
FROM public.recruits r
|
||||
WHERE r.vu_current_info ->> 'isMilitaryRegistered' = 'false'
|
||||
AND r.current_recruitment_id IS NOT NULL
|
||||
AND r.target_recruitment_id IS NOT NULL
|
||||
),
|
||||
total AS (
|
||||
-- Общее количество записей
|
||||
SELECT COUNT(*) AS total_count
|
||||
FROM base_data
|
||||
),
|
||||
t1 AS (
|
||||
-- Первоначальная постановка 17 лет
|
||||
SELECT COUNT(*) AS first_reg_17
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"5"'
|
||||
),
|
||||
t2 AS (
|
||||
-- Первоначальная постановка 18 лет
|
||||
SELECT COUNT(*) AS first_reg_18
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"6"'
|
||||
OR registration_reasons @> '"3"'
|
||||
OR registration_reasons @> '"1"'
|
||||
OR registration_reasons @> '"4"'
|
||||
OR registration_reasons @> '"2"'
|
||||
),
|
||||
t3 AS (
|
||||
-- Женщины, получившие ВУС
|
||||
SELECT COUNT(*) AS mil_spec_w
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"3"' AND gender = 'FEMALE'
|
||||
),
|
||||
t4 AS (
|
||||
-- Возвратившиеся из мест лишения свободы
|
||||
SELECT COUNT(*) AS returned_dep_liberty
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"1"'
|
||||
),
|
||||
t5 AS (
|
||||
-- Отбывающие наказание в местах лишения свободы
|
||||
SELECT COUNT(*) AS punished
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"4"'
|
||||
),
|
||||
t6 AS (
|
||||
-- Получившие гражданство
|
||||
SELECT COUNT(*) AS received_citizenship
|
||||
FROM base_data
|
||||
WHERE registration_reasons @> '"2"'
|
||||
)
|
||||
SELECT
|
||||
total.total_count,
|
||||
t1.first_reg_17,
|
||||
t2.first_reg_18,
|
||||
t3.mil_spec_w,
|
||||
t4.returned_dep_liberty,
|
||||
t5.punished,
|
||||
t6.received_citizenship,
|
||||
-- Вычисление процентов
|
||||
ROUND(t1.first_reg_17 * 100.0 / NULLIF(total.total_count, 0), 2) AS first_reg_17_percent,
|
||||
ROUND(t2.first_reg_18 * 100.0 / NULLIF(total.total_count, 0), 2) AS first_reg_18_percent,
|
||||
ROUND(t4.returned_dep_liberty * 100.0 / NULLIF(total.total_count, 0), 2) AS returned_dep_liberty_percent,
|
||||
ROUND(t3.mil_spec_w * 100.0 / NULLIF(total.total_count, 0), 2) AS mil_spec_w_percent,
|
||||
ROUND(t5.punished * 100.0 / NULLIF(total.total_count, 0), 2) AS punished_percent,
|
||||
ROUND(t6.received_citizenship * 100.0 / NULLIF(total.total_count, 0), 2) AS received_citizenship_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM(first_reg_17), 0) END AS first_reg_17,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM(first_reg_18), 0) END AS first_reg_18,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM("mil_spec_W"), 0) END AS mil_spec_w,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM(returned_dep_liberty), 0) END AS returned_dep_liberty,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM(punished), 0) END AS punished,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE COALESCE(SUM(received_citizenship), 0) END AS received_citizenship,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM(first_reg_17) / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS first_reg_17_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM(first_reg_18) / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS first_reg_18_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM(returned_dep_liberty) / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS returned_dep_liberty_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM("mil_spec_W") / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS mil_spec_w_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM(punished) / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS punished_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN (SUM(first_reg_17) + SUM(first_reg_18)) > 0
|
||||
THEN ROUND((SUM(received_citizenship) / (SUM(first_reg_17) + SUM(first_reg_18)) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS received_citizenship_percent,
|
||||
'${REG_ID}'::uuid AS recruitment_id,
|
||||
0 AS mil_reg,
|
||||
1 AS org
|
||||
FROM total
|
||||
FULL OUTER JOIN t1 ON 1 = 1
|
||||
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;</sql>
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.reg_mil_cat
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND mil_reg = 0
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -504,57 +504,6 @@
|
|||
</attribute>
|
||||
</attributes>
|
||||
</connection>
|
||||
<connection>
|
||||
<name>postgres.decision-document-service</name>
|
||||
<server>decision-dbhost</server>
|
||||
<type>POSTGRESQL</type>
|
||||
<access>Native</access>
|
||||
<database>decision-dbname</database>
|
||||
<port>3333</port>
|
||||
<username>decision-dbuser</username>
|
||||
<password>Encrypted 2befccaab03d49b8ba554aa72ce93bcc9</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>3333</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>Table input (decision-document-service) РФ</from>
|
||||
|
|
@ -820,32 +769,97 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.decision-document-service</connection>
|
||||
<connection>ervu-dashboard</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,
|
||||
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, -- Процент по другим причинам
|
||||
'Ministry' AS schema,
|
||||
'${REG_ID}' 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 IS NOT NULL
|
||||
AND r.target_recruitment IS NOT NULL
|
||||
AND dt.code IN ('9', '10');</sql>
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(age_limit) END AS age_limit,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(death) END AS death,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(removed_registry) END AS removed_registry,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(deprivation_citizenship) END AS deprivation_citizenship,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(travel_abroad) END AS travel_abroad,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(living_abroad) END AS living_abroad,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(other) END AS other,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(removed_registry) > 0
|
||||
THEN ROUND((SUM(deprivation_citizenship) / SUM(removed_registry) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS deprivation_citizen_percents,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(removed_registry) > 0
|
||||
THEN ROUND((SUM(age_limit) / SUM(removed_registry) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS age_limit_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(removed_registry) > 0
|
||||
THEN ROUND((SUM(death) / SUM(removed_registry) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS death_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(removed_registry) > 0
|
||||
THEN ROUND((SUM(travel_abroad) / SUM(removed_registry) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS travel_abroad_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(removed_registry) > 0
|
||||
THEN ROUND((SUM(living_abroad) / SUM(removed_registry) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS living_abroad_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(removed_registry) > 0
|
||||
THEN ROUND((SUM(other) / SUM(removed_registry) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS other_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.removed_registry
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -504,57 +504,6 @@
|
|||
</attribute>
|
||||
</attributes>
|
||||
</connection>
|
||||
<connection>
|
||||
<name>postgres.subpoena</name>
|
||||
<server>subpoena-dbhost</server>
|
||||
<type>POSTGRESQL</type>
|
||||
<access>Native</access>
|
||||
<database>subpoena-dbname</database>
|
||||
<port>5555</port>
|
||||
<username>subpoena-dbuser</username>
|
||||
<password>Encrypted 2beebdaaa1ac8978aaa54aa72ce93bcc9</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>5555</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>Table input (subpoena)РФ/рег</from>
|
||||
|
|
@ -1184,143 +1133,154 @@
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
ssh.code AS sub_stat_hist,
|
||||
s.send_date,
|
||||
sh.date_time::timestamp AS history_date,
|
||||
rdi.restriction_document_cancel_id AS restr_dc,
|
||||
rdi.applied_date AS ap_date,
|
||||
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 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 = '1'
|
||||
and ssh.code not in ('3.14','3.7','3.72', '3.71')
|
||||
),
|
||||
-- фильтруем только последние статусы для каждой повестки
|
||||
last_status AS (
|
||||
SELECT *
|
||||
FROM subpoena_data
|
||||
WHERE rn = 1 -- выбираем только последнюю запись для каждой повестки
|
||||
),
|
||||
-- Подсчет различных метрик
|
||||
t1 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_subpoena
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IS NOT NULL
|
||||
),
|
||||
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 IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '5'
|
||||
),
|
||||
t5 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_ap_good_reason
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '5.1'
|
||||
),
|
||||
t6 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_ap_not_required
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3.8', '5.2')
|
||||
),
|
||||
t7 AS ( -- количество повесток по которым применены ограничения
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_restrictions_applied
|
||||
FROM last_status
|
||||
WHERE restr_dc IS NULL
|
||||
),
|
||||
t8 AS ( -- количество повесток по которым введены меры
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_introduced_measures
|
||||
FROM last_status
|
||||
WHERE restr_dc IS NULL AND ap_date IS NOT NULL
|
||||
),
|
||||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
FROM last_status
|
||||
WHERE d_code = '7'
|
||||
),
|
||||
t11 AS (
|
||||
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
|
||||
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,
|
||||
t10.count_electron,
|
||||
t11.count_restrictions,
|
||||
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, --процент не врученных
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(subpoena) END AS count_subpoena,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(appeared) END AS count_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average_appeared) END AS average_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_appeared) END AS count_not_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_ap_good_reason) END AS count_not_ap_good_reason,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(introduced_measures) END AS count_introduced_measures,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(ap_not_required) END AS count_ap_not_required,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(electron) END AS count_electron,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(paper) END AS count_paper,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(restrictions_applied) END AS count_restrictions_applied,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(appeared) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS appeared_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(not_appeared) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_appeared_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(not_ap_good_reason) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_ap_good_reason_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(ap_not_required) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS ap_not_required_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(electron) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS electron_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(paper) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS paper_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(restrictions_applied) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS restrictions_applied_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(introduced_measures) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS introduced_measures_percent,
|
||||
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(count_not_delivery) END AS count_not_delivery,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(appear_date_is_good) END AS appear_date_is_good,
|
||||
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(count_not_delivery) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_delivery_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(appear_date_is_good) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS appear_date_is_good_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
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
|
||||
FULL OUTER JOIN t12 ON 1 = 1
|
||||
FULL OUTER JOIN t13 ON 1 = 1;</sql>
|
||||
0 AS mil_reg,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.subpoenas
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND mil_reg = 0
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
@ -1351,143 +1311,154 @@ FULL OUTER JOIN t13 ON 1 = 1;</sql>
|
|||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>postgres.subpoena</connection>
|
||||
<sql>WITH subpoena_data AS (
|
||||
SELECT
|
||||
s.id AS subpoena_id,
|
||||
s.status_id,
|
||||
sr.type,
|
||||
ssh.code AS sub_stat_hist,
|
||||
s.send_date,
|
||||
sh.date_time::timestamp AS history_date,
|
||||
rdi.restriction_document_cancel_id AS restr_dc,
|
||||
rdi.applied_date AS ap_date,
|
||||
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 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 != '1'
|
||||
and ssh.code not in ('3.14','3.7','3.72', '3.71')
|
||||
),
|
||||
-- фильтруем только последние статусы для каждой повестки
|
||||
last_status AS (
|
||||
SELECT *
|
||||
FROM subpoena_data
|
||||
WHERE rn = 1 -- выбираем только последнюю запись для каждой повестки
|
||||
),
|
||||
-- Подсчет различных метрик
|
||||
t1 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_subpoena
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IS NOT NULL
|
||||
),
|
||||
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 IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t3 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('4.1', '4.2', '4')
|
||||
),
|
||||
t4 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_appeared
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '5'
|
||||
),
|
||||
t5 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_not_ap_good_reason
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist = '5.1'
|
||||
),
|
||||
t6 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_ap_not_required
|
||||
FROM last_status
|
||||
WHERE sub_stat_hist IN ('3.8', '5.2')
|
||||
),
|
||||
t7 AS ( -- количество повесток по которым применены ограничения
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_restrictions_applied
|
||||
FROM last_status
|
||||
WHERE restr_dc IS NULL
|
||||
),
|
||||
t8 AS ( -- количество повесток по которым введены меры
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_introduced_measures
|
||||
FROM last_status
|
||||
WHERE restr_dc IS NULL AND ap_date IS NOT NULL
|
||||
),
|
||||
t9 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_paper
|
||||
FROM last_status
|
||||
WHERE d_code != '7'
|
||||
),
|
||||
t10 AS (
|
||||
SELECT COUNT(DISTINCT subpoena_id) AS count_electron
|
||||
FROM last_status
|
||||
WHERE d_code = '7'
|
||||
),
|
||||
t11 AS (
|
||||
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
|
||||
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,
|
||||
t10.count_electron,
|
||||
t11.count_restrictions,
|
||||
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, --процент не врученных
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(subpoena) END AS count_subpoena,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(appeared) END AS count_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(average_appeared) END AS average_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_appeared) END AS count_not_appeared,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_ap_good_reason) END AS count_not_ap_good_reason,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(introduced_measures) END AS count_introduced_measures,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(ap_not_required) END AS count_ap_not_required,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(electron) END AS count_electron,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(paper) END AS count_paper,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(restrictions_applied) END AS count_restrictions_applied,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(appeared) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS appeared_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(not_appeared) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_appeared_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(not_ap_good_reason) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_ap_good_reason_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(ap_not_required) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS ap_not_required_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(electron) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS electron_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(paper) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS paper_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(restrictions_applied) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS restrictions_applied_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(introduced_measures) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS introduced_measures_percent,
|
||||
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(count_not_delivery) END AS count_not_delivery,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(appear_date_is_good) END AS appear_date_is_good,
|
||||
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(count_not_delivery) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_delivery_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(subpoena) > 0
|
||||
THEN ROUND((SUM(appear_date_is_good) / SUM(subpoena) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS appear_date_is_good_percent,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'Ministry' AS schema,
|
||||
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
|
||||
FULL OUTER JOIN t12 ON 1 = 1
|
||||
FULL OUTER JOIN t13 ON 1 = 1;</sql>
|
||||
1 AS mil_reg,
|
||||
'Ministry' AS schema
|
||||
FROM total_registered.subpoenas
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Region'
|
||||
AND mil_reg = 1
|
||||
AND recording_date = CURRENT_DATE;</sql>
|
||||
<limit>0</limit>
|
||||
<lookup/>
|
||||
<execute_each_row>N</execute_each_row>
|
||||
|
|
|
|||
|
|
@ -360,7 +360,7 @@
|
|||
<parallel>N</parallel>
|
||||
<draw>Y</draw>
|
||||
<nr>0</nr>
|
||||
<xloc>576</xloc>
|
||||
<xloc>240</xloc>
|
||||
<yloc>224</yloc>
|
||||
<attributes_kjc/>
|
||||
</entry>
|
||||
|
|
@ -397,7 +397,7 @@
|
|||
<parallel>N</parallel>
|
||||
<draw>Y</draw>
|
||||
<nr>0</nr>
|
||||
<xloc>1024</xloc>
|
||||
<xloc>688</xloc>
|
||||
<yloc>224</yloc>
|
||||
<attributes_kjc/>
|
||||
</entry>
|
||||
|
|
@ -434,8 +434,8 @@
|
|||
<parallel>N</parallel>
|
||||
<draw>Y</draw>
|
||||
<nr>0</nr>
|
||||
<xloc>1024</xloc>
|
||||
<yloc>96</yloc>
|
||||
<xloc>1088</xloc>
|
||||
<yloc>224</yloc>
|
||||
<attributes_kjc/>
|
||||
</entry>
|
||||
<entry>
|
||||
|
|
@ -471,7 +471,7 @@
|
|||
<parallel>N</parallel>
|
||||
<draw>Y</draw>
|
||||
<nr>0</nr>
|
||||
<xloc>816</xloc>
|
||||
<xloc>480</xloc>
|
||||
<yloc>224</yloc>
|
||||
<attributes_kjc/>
|
||||
</entry>
|
||||
|
|
@ -508,7 +508,7 @@
|
|||
<parallel>N</parallel>
|
||||
<draw>Y</draw>
|
||||
<nr>0</nr>
|
||||
<xloc>1232</xloc>
|
||||
<xloc>896</xloc>
|
||||
<yloc>224</yloc>
|
||||
<attributes_kjc/>
|
||||
</entry>
|
||||
|
|
@ -520,22 +520,10 @@
|
|||
<parallel>N</parallel>
|
||||
<draw>Y</draw>
|
||||
<nr>0</nr>
|
||||
<xloc>1440</xloc>
|
||||
<xloc>1264</xloc>
|
||||
<yloc>224</yloc>
|
||||
<attributes_kjc/>
|
||||
</entry>
|
||||
<entry>
|
||||
<name>Success 2 2</name>
|
||||
<description/>
|
||||
<type>SUCCESS</type>
|
||||
<attributes/>
|
||||
<parallel>N</parallel>
|
||||
<draw>Y</draw>
|
||||
<nr>0</nr>
|
||||
<xloc>1216</xloc>
|
||||
<yloc>96</yloc>
|
||||
<attributes_kjc/>
|
||||
</entry>
|
||||
<entry>
|
||||
<name>job_ratings.kjb</name>
|
||||
<description/>
|
||||
|
|
@ -569,7 +557,7 @@
|
|||
<parallel>N</parallel>
|
||||
<draw>Y</draw>
|
||||
<nr>0</nr>
|
||||
<xloc>1232</xloc>
|
||||
<xloc>896</xloc>
|
||||
<yloc>320</yloc>
|
||||
<attributes_kjc/>
|
||||
</entry>
|
||||
|
|
@ -581,7 +569,7 @@
|
|||
<parallel>N</parallel>
|
||||
<draw>Y</draw>
|
||||
<nr>0</nr>
|
||||
<xloc>1440</xloc>
|
||||
<xloc>1328</xloc>
|
||||
<yloc>320</yloc>
|
||||
<attributes_kjc/>
|
||||
</entry>
|
||||
|
|
@ -605,15 +593,6 @@
|
|||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>job_recruitment_mil_district</from>
|
||||
<to>Success 2</to>
|
||||
<from_nr>0</from_nr>
|
||||
<to_nr>0</to_nr>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<to>job_recruitments_mil_com</to>
|
||||
|
|
@ -624,8 +603,8 @@
|
|||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>job_recruitments_country</from>
|
||||
<to>Success 2 2</to>
|
||||
<from>job_recruitments_region</from>
|
||||
<to>job_ratings.kjb</to>
|
||||
<from_nr>0</from_nr>
|
||||
<to_nr>0</to_nr>
|
||||
<enabled>Y</enabled>
|
||||
|
|
@ -633,12 +612,21 @@
|
|||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Start</from>
|
||||
<from>job_recruitment_mil_district</from>
|
||||
<to>job_recruitments_country</to>
|
||||
<from_nr>0</from_nr>
|
||||
<to_nr>0</to_nr>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>job_recruitments_country</from>
|
||||
<to>Success 2</to>
|
||||
<from_nr>0</from_nr>
|
||||
<to_nr>0</to_nr>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>Y</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
|
|
@ -650,15 +638,6 @@
|
|||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>job_recruitments_region</from>
|
||||
<to>job_ratings.kjb</to>
|
||||
<from_nr>0</from_nr>
|
||||
<to_nr>0</to_nr>
|
||||
<enabled>Y</enabled>
|
||||
<evaluation>Y</evaluation>
|
||||
<unconditional>N</unconditional>
|
||||
</hop>
|
||||
</hops>
|
||||
<notepads>
|
||||
</notepads>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -550,6 +550,51 @@
|
|||
<to>Insert / update (total_registered.busyness) 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Get variables 3 2 4</from>
|
||||
<to>Select values 3 2 4</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Get variables 3 2 2 2</from>
|
||||
<to>Select values 3 2 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Get variables 3 2 3 2</from>
|
||||
<to>Select values 3 2 3 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 4</from>
|
||||
<to>Insert / update (total_registered.busyness) 4</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 2 2</from>
|
||||
<to>Insert / update (total_registered.busyness) 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 3 2</from>
|
||||
<to>Insert / update (total_registered.busyness) 3 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/все 2</from>
|
||||
<to>Get variables 3 2 4</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/женщины 2</from>
|
||||
<to>Get variables 3 2 3 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины 2</from>
|
||||
<to>Get variables 3 2 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<step>
|
||||
<name>Get variables 3 2</name>
|
||||
|
|
@ -1451,6 +1496,906 @@ AND recording_date = CURRENT_DATE;</sql>
|
|||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Get variables 3 2 4</name>
|
||||
<type>GetVariable</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<field>
|
||||
<name>MD_ID</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
<field>
|
||||
<name>MD_ARRAY</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>640</xloc>
|
||||
<yloc>672</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Get variables 3 2 2 2</name>
|
||||
<type>GetVariable</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<field>
|
||||
<name>MD_ID</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
<field>
|
||||
<name>MD_ARRAY</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>640</xloc>
|
||||
<yloc>832</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Get variables 3 2 3 2</name>
|
||||
<type>GetVariable</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<field>
|
||||
<name>MD_ID</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
<field>
|
||||
<name>MD_ARRAY</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>656</xloc>
|
||||
<yloc>992</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Insert / update (total_registered.busyness) 4</name>
|
||||
<type>InsertUpdate</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<commit>100</commit>
|
||||
<update_bypassed>Y</update_bypassed>
|
||||
<lookup>
|
||||
<schema>total_registered</schema>
|
||||
<table>busyness</table>
|
||||
<key>
|
||||
<name>MD_ID</name>
|
||||
<field>recruitment_id</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<key>
|
||||
<name>schema</name>
|
||||
<field>schema</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<value>
|
||||
<name>study</name>
|
||||
<rename>study</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work</name>
|
||||
<rename>work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>study_percent</name>
|
||||
<rename>study_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work_percent</name>
|
||||
<rename>work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>registered</name>
|
||||
<rename>registered</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work</name>
|
||||
<rename>not_work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work_percent</name>
|
||||
<rename>not_work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>busyness</name>
|
||||
<rename>total_people</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>schema</name>
|
||||
<rename>schema</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>1056</xloc>
|
||||
<yloc>672</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Insert / update (total_registered.busyness) 2 2</name>
|
||||
<type>InsertUpdate</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<commit>100</commit>
|
||||
<update_bypassed>Y</update_bypassed>
|
||||
<lookup>
|
||||
<schema>total_registered</schema>
|
||||
<table>busyness</table>
|
||||
<key>
|
||||
<name>MD_ID</name>
|
||||
<field>recruitment_id</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<key>
|
||||
<name>schema</name>
|
||||
<field>schema</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<value>
|
||||
<name>study</name>
|
||||
<rename>study</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work</name>
|
||||
<rename>work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>study_percent</name>
|
||||
<rename>study_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work_percent</name>
|
||||
<rename>work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>registered</name>
|
||||
<rename>registered</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work</name>
|
||||
<rename>not_work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work_percent</name>
|
||||
<rename>not_work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>busyness</name>
|
||||
<rename>total_people</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>schema</name>
|
||||
<rename>schema</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>1040</xloc>
|
||||
<yloc>832</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Insert / update (total_registered.busyness) 3 2</name>
|
||||
<type>InsertUpdate</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<commit>100</commit>
|
||||
<update_bypassed>Y</update_bypassed>
|
||||
<lookup>
|
||||
<schema>total_registered</schema>
|
||||
<table>busyness</table>
|
||||
<key>
|
||||
<name>MD_ID</name>
|
||||
<field>recruitment_id</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<key>
|
||||
<name>schema</name>
|
||||
<field>schema</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<value>
|
||||
<name>study</name>
|
||||
<rename>study</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work</name>
|
||||
<rename>work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>study_percent</name>
|
||||
<rename>study_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work_percent</name>
|
||||
<rename>work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>registered</name>
|
||||
<rename>registered</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work</name>
|
||||
<rename>not_work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work_percent</name>
|
||||
<rename>not_work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>busyness</name>
|
||||
<rename>total_people</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>schema</name>
|
||||
<rename>schema</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>1040</xloc>
|
||||
<yloc>992</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Select values 3 2 4</name>
|
||||
<type>SelectValues</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<select_unspecified>N</select_unspecified>
|
||||
<meta>
|
||||
<name>MD_ID</name>
|
||||
<rename>MD_ID</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
<meta>
|
||||
<name>MD_ARRAY</name>
|
||||
<rename>MD_ARRAY</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>784</xloc>
|
||||
<yloc>672</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Select values 3 2 2 2</name>
|
||||
<type>SelectValues</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<select_unspecified>N</select_unspecified>
|
||||
<meta>
|
||||
<name>MD_ID</name>
|
||||
<rename>MD_ID</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
<meta>
|
||||
<name>MD_ARRAY</name>
|
||||
<rename>MD_ARRAY</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>784</xloc>
|
||||
<yloc>832</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Select values 3 2 3 2</name>
|
||||
<type>SelectValues</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<select_unspecified>N</select_unspecified>
|
||||
<meta>
|
||||
<name>MD_ID</name>
|
||||
<rename>MD_ID</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
<meta>
|
||||
<name>MD_ARRAY</name>
|
||||
<rename>MD_ARRAY</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>800</xloc>
|
||||
<yloc>992</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Table input (person_registry) РФ/все 2</name>
|
||||
<type>TableInput</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(study) END AS study,
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(work) END AS work,
|
||||
CASE
|
||||
WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS study_percent,
|
||||
CASE
|
||||
WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS work_percent,
|
||||
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(not_work) END AS not_work,
|
||||
CASE
|
||||
WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(not_work) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_work_percent,
|
||||
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(busyness) END AS total_people,
|
||||
'${MD_ID}' AS recruitment_id,
|
||||
'ALL' AS gender,
|
||||
'false' AS registered,
|
||||
'Region' AS schema
|
||||
FROM total_registered.busyness
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${MD_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Organization'
|
||||
AND registered = 'false'
|
||||
AND "all_M_W" = 'ALL'
|
||||
AND recording_date = CURRENT_DATE;</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>416</xloc>
|
||||
<yloc>672</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Table input (person_registry) РФ/женщины 2</name>
|
||||
<type>TableInput</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(study) END AS study,
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(work) END AS work,
|
||||
CASE
|
||||
WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS study_percent,
|
||||
CASE
|
||||
WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS work_percent,
|
||||
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(not_work) END AS not_work,
|
||||
CASE
|
||||
WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(not_work) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_work_percent,
|
||||
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(busyness) END AS total_people,
|
||||
'${MD_ID}' AS recruitment_id,
|
||||
'W' AS gender,
|
||||
'false' AS registered,
|
||||
'Region' AS schema
|
||||
FROM total_registered.busyness
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${MD_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Organization'
|
||||
AND registered = 'false'
|
||||
AND "all_M_W" = 'W'
|
||||
AND recording_date = CURRENT_DATE;</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>416</xloc>
|
||||
<yloc>992</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Table input (person_registry) РФ/мужчины 2</name>
|
||||
<type>TableInput</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(study) END AS study,
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(work) END AS work,
|
||||
CASE
|
||||
WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS study_percent,
|
||||
CASE
|
||||
WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS work_percent,
|
||||
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(not_work) END AS not_work,
|
||||
CASE
|
||||
WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(not_work) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_work_percent,
|
||||
|
||||
CASE WHEN '${MD_ARRAY}' IS NULL OR '${MD_ARRAY}' = '' THEN 0 ELSE SUM(busyness) END AS total_people,
|
||||
'${MD_ID}' AS recruitment_id,
|
||||
'M' AS gender,
|
||||
'false' AS registered,
|
||||
'Region' AS schema
|
||||
FROM total_registered.busyness
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${MD_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND schema = 'Organization'
|
||||
AND registered = 'false'
|
||||
AND "all_M_W" = 'M'
|
||||
AND recording_date = CURRENT_DATE;</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>416</xloc>
|
||||
<yloc>832</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step_error_handling>
|
||||
</step_error_handling>
|
||||
<slave-step-copy-partition-distribution>
|
||||
|
|
|
|||
|
|
@ -550,6 +550,51 @@
|
|||
<to>Insert / update (total_registered.busyness) 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Get variables 3 2 3</from>
|
||||
<to>Select values 3 2 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Get variables 3 2 2 3</from>
|
||||
<to>Select values 3 2 2 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Get variables 3 2 2 2 2</from>
|
||||
<to>Select values 3 2 2 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 3</from>
|
||||
<to>Insert / update (total_registered.busyness) 4</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 2 3</from>
|
||||
<to>Insert / update (total_registered.busyness) 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Select values 3 2 2 2 2</from>
|
||||
<to>Insert / update (total_registered.busyness) 3 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/все 2</from>
|
||||
<to>Get variables 3 2 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/женщины 2</from>
|
||||
<to>Get variables 3 2 2 2 2</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
<hop>
|
||||
<from>Table input (person_registry) РФ/мужчины 2</from>
|
||||
<to>Get variables 3 2 2 3</to>
|
||||
<enabled>Y</enabled>
|
||||
</hop>
|
||||
</order>
|
||||
<step>
|
||||
<name>Get variables 3 2</name>
|
||||
|
|
@ -1448,6 +1493,903 @@ AND recording_date = CURRENT_DATE;</sql>
|
|||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Get variables 3 2 3</name>
|
||||
<type>GetVariable</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<field>
|
||||
<name>REG_ID</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
<field>
|
||||
<name>VK_ARRAY</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>683</xloc>
|
||||
<yloc>661</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Get variables 3 2 2 3</name>
|
||||
<type>GetVariable</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<field>
|
||||
<name>REG_ID</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
<field>
|
||||
<name>VK_ARRAY</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>683</xloc>
|
||||
<yloc>821</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Get variables 3 2 2 2 2</name>
|
||||
<type>GetVariable</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<field>
|
||||
<name>REG_ID</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
<field>
|
||||
<name>VK_ARRAY</name>
|
||||
<variable/>
|
||||
<type>String</type>
|
||||
<format/>
|
||||
<currency/>
|
||||
<decimal/>
|
||||
<group/>
|
||||
<length>-1</length>
|
||||
<precision>-1</precision>
|
||||
<trim_type>none</trim_type>
|
||||
</field>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>683</xloc>
|
||||
<yloc>981</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Insert / update (total_registered.busyness) 4</name>
|
||||
<type>InsertUpdate</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<commit>100</commit>
|
||||
<update_bypassed>Y</update_bypassed>
|
||||
<lookup>
|
||||
<schema>total_registered</schema>
|
||||
<table>busyness</table>
|
||||
<key>
|
||||
<name>REG_ID</name>
|
||||
<field>recruitment_id</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<key>
|
||||
<name>schema</name>
|
||||
<field>schema</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<value>
|
||||
<name>study</name>
|
||||
<rename>study</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work</name>
|
||||
<rename>work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>study_percent</name>
|
||||
<rename>study_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work_percent</name>
|
||||
<rename>work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>registered</name>
|
||||
<rename>registered</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work</name>
|
||||
<rename>not_work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work_percent</name>
|
||||
<rename>not_work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>busyness</name>
|
||||
<rename>total_people</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>schema</name>
|
||||
<rename>schema</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>1083</xloc>
|
||||
<yloc>661</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Insert / update (total_registered.busyness) 2 2</name>
|
||||
<type>InsertUpdate</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<commit>100</commit>
|
||||
<update_bypassed>Y</update_bypassed>
|
||||
<lookup>
|
||||
<schema>total_registered</schema>
|
||||
<table>busyness</table>
|
||||
<key>
|
||||
<name>REG_ID</name>
|
||||
<field>recruitment_id</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<key>
|
||||
<name>schema</name>
|
||||
<field>schema</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<value>
|
||||
<name>study</name>
|
||||
<rename>study</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work</name>
|
||||
<rename>work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>study_percent</name>
|
||||
<rename>study_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work_percent</name>
|
||||
<rename>work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>registered</name>
|
||||
<rename>registered</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work</name>
|
||||
<rename>not_work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work_percent</name>
|
||||
<rename>not_work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>busyness</name>
|
||||
<rename>total_people</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>schema</name>
|
||||
<rename>schema</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>1083</xloc>
|
||||
<yloc>821</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Insert / update (total_registered.busyness) 3 2</name>
|
||||
<type>InsertUpdate</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<commit>100</commit>
|
||||
<update_bypassed>Y</update_bypassed>
|
||||
<lookup>
|
||||
<schema>total_registered</schema>
|
||||
<table>busyness</table>
|
||||
<key>
|
||||
<name>REG_ID</name>
|
||||
<field>recruitment_id</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<key>
|
||||
<name>schema</name>
|
||||
<field>schema</field>
|
||||
<condition>=</condition>
|
||||
<name2/>
|
||||
</key>
|
||||
<value>
|
||||
<name>study</name>
|
||||
<rename>study</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work</name>
|
||||
<rename>work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>study_percent</name>
|
||||
<rename>study_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>work_percent</name>
|
||||
<rename>work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>recruitment_id</name>
|
||||
<rename>recruitment_id</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>registered</name>
|
||||
<rename>registered</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>"all_M_W"</name>
|
||||
<rename>gender</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work</name>
|
||||
<rename>not_work</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>not_work_percent</name>
|
||||
<rename>not_work_percent</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>busyness</name>
|
||||
<rename>total_people</rename>
|
||||
<update>Y</update>
|
||||
</value>
|
||||
<value>
|
||||
<name>schema</name>
|
||||
<rename>schema</rename>
|
||||
<update>N</update>
|
||||
</value>
|
||||
</lookup>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>1083</xloc>
|
||||
<yloc>981</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Select values 3 2 3</name>
|
||||
<type>SelectValues</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<select_unspecified>N</select_unspecified>
|
||||
<meta>
|
||||
<name>REG_ID</name>
|
||||
<rename>REG_ID</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
<meta>
|
||||
<name>VK_ARRAY</name>
|
||||
<rename>VK_ARRAY</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>827</xloc>
|
||||
<yloc>661</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Select values 3 2 2 3</name>
|
||||
<type>SelectValues</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<select_unspecified>N</select_unspecified>
|
||||
<meta>
|
||||
<name>REG_ID</name>
|
||||
<rename>REG_ID</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
<meta>
|
||||
<name>VK_ARRAY</name>
|
||||
<rename>VK_ARRAY</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>827</xloc>
|
||||
<yloc>821</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Select values 3 2 2 2 2</name>
|
||||
<type>SelectValues</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<fields>
|
||||
<select_unspecified>N</select_unspecified>
|
||||
<meta>
|
||||
<name>REG_ID</name>
|
||||
<rename>REG_ID</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
<meta>
|
||||
<name>VK_ARRAY</name>
|
||||
<rename>VK_ARRAY</rename>
|
||||
<type>String</type>
|
||||
<length>-2</length>
|
||||
<precision>-2</precision>
|
||||
<conversion_mask/>
|
||||
<date_format_lenient>false</date_format_lenient>
|
||||
<date_format_locale/>
|
||||
<date_format_timezone/>
|
||||
<lenient_string_to_number>false</lenient_string_to_number>
|
||||
<encoding/>
|
||||
<decimal_symbol/>
|
||||
<grouping_symbol/>
|
||||
<currency_symbol/>
|
||||
<storage_type/>
|
||||
</meta>
|
||||
</fields>
|
||||
<attributes/>
|
||||
<cluster_schema/>
|
||||
<remotesteps>
|
||||
<input>
|
||||
</input>
|
||||
<output>
|
||||
</output>
|
||||
</remotesteps>
|
||||
<GUI>
|
||||
<xloc>827</xloc>
|
||||
<yloc>981</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Table input (person_registry) РФ/все 2</name>
|
||||
<type>TableInput</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(study) END AS study,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(work) END AS work,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS study_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS work_percent,
|
||||
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_work) END AS not_work,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(not_work) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_work_percent,
|
||||
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(busyness) END AS total_people,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'ALL' AS gender,
|
||||
'false' AS registered,
|
||||
'Organization' AS schema
|
||||
FROM total_registered.busyness
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND registered = 'false'
|
||||
AND "all_M_W" = 'ALL'
|
||||
AND recording_date = CURRENT_DATE;</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>443</xloc>
|
||||
<yloc>661</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Table input (person_registry) РФ/женщины 2</name>
|
||||
<type>TableInput</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(study) END AS study,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(work) END AS work,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS study_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS work_percent,
|
||||
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_work) END AS not_work,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(not_work) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_work_percent,
|
||||
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(busyness) END AS total_people,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'W' AS gender,
|
||||
'false' AS registered,
|
||||
'Organization' AS schema
|
||||
FROM total_registered.busyness
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND registered = 'false'
|
||||
AND "all_M_W" = 'W'
|
||||
AND recording_date = CURRENT_DATE;</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>443</xloc>
|
||||
<yloc>981</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step>
|
||||
<name>Table input (person_registry) РФ/мужчины 2</name>
|
||||
<type>TableInput</type>
|
||||
<description/>
|
||||
<distribute>Y</distribute>
|
||||
<custom_distribution/>
|
||||
<copies>1</copies>
|
||||
<partitioning>
|
||||
<method>none</method>
|
||||
<schema_name/>
|
||||
</partitioning>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<sql>SELECT
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(study) END AS study,
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(work) END AS work,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS study_percent,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(study) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS work_percent,
|
||||
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(not_work) END AS not_work,
|
||||
CASE
|
||||
WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = ''
|
||||
THEN 0
|
||||
ELSE COALESCE(
|
||||
CASE
|
||||
WHEN SUM(busyness) > 0
|
||||
THEN ROUND((SUM(not_work) / SUM(busyness) * 100), 2)
|
||||
ELSE 0
|
||||
END,
|
||||
0
|
||||
)
|
||||
END AS not_work_percent,
|
||||
|
||||
CASE WHEN '${VK_ARRAY}' IS NULL OR '${VK_ARRAY}' = '' THEN 0 ELSE SUM(busyness) END AS total_people,
|
||||
'${REG_ID}' AS recruitment_id,
|
||||
'M' AS gender,
|
||||
'false' AS registered,
|
||||
'Organization' AS schema
|
||||
FROM total_registered.busyness
|
||||
WHERE recruitment_id = ANY (
|
||||
string_to_array(
|
||||
trim(both '{}' FROM replace('${VK_ARRAY}', ' ', '')), ','
|
||||
)::uuid[]
|
||||
)
|
||||
AND registered = 'false'
|
||||
AND "all_M_W" = 'M'
|
||||
AND recording_date = CURRENT_DATE;</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>443</xloc>
|
||||
<yloc>821</yloc>
|
||||
<draw>Y</draw>
|
||||
</GUI>
|
||||
</step>
|
||||
<step_error_handling>
|
||||
</step_error_handling>
|
||||
<slave-step-copy-partition-distribution>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue