REG_IDrecruitment_id=spring_autumnspring_autumn=subpoenacount_subpoenaYappearedcount_appearedYnot_appearedcount_not_appearedYnot_ap_good_reasoncount_not_ap_good_reasonYintroduced_measurescount_introduced_measuresYap_not_requiredcount_ap_not_requiredYrestrictions_appliedcount_restrictions_appliedYappeared_percentappeared_percentYnot_appeared_percentnot_appeared_percentYnot_ap_good_reason_percentnot_ap_good_reason_percentYap_not_required_percentap_not_required_percentYrestrictions_applied_percentrestrictions_applied_percentYintroduced_measures_percentintroduced_measures_percentYrecruitment_idrecruitment_idNrestrestYspring_autumnspring_autumnNcount_not_deliverycount_not_deliveryYappear_date_is_goodappear_date_is_goodYnot_delivery_percentnot_delivery_percentYappear_date_is_good_percentappear_date_is_good_percentY1088304YSelect values 3 2SelectValuesY1noneNREG_IDREG_IDString-2-2falsefalseVK_ARRAYVK_ARRAYString-2-2falsefalse816208YSelect values 3 2 2SelectValuesY1noneNREG_IDREG_IDString-2-2falsefalseVK_ARRAYVK_ARRAYString-2-2falsefalse816352YTable input (subpoena) Весна/РФTableInputY1nonepostgres.subpoenaWITH 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, --процент не врученных
'${REG_ID}' AS recruitment_id,
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;
0NYN400304YTable input (subpoena) осень/РФTableInputN1nonepostgres.subpoenaWITH 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, --процент не врученных
'${REG_ID}' AS recruitment_id,
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;
0NYN400144YN