uniq
This commit is contained in:
parent
6544157b7f
commit
58435c236a
1 changed files with 184 additions and 27 deletions
|
|
@ -51,6 +51,7 @@ ids AS (
|
|||
SELECT unnest(string_to_array(nullif(trim(both '{}' from '${ARR_MC_AU}'), ''), ','))::uuid AS recruitment_id,
|
||||
'Осень' AS spring_autumn
|
||||
),
|
||||
/*
|
||||
last_status as (select recruit_id,
|
||||
max(date_time) filter (where status not in ('1', '1.3', '12', '12.1', '12.2', '12.3', '12.4', '12.5', '13')) max_date_time
|
||||
from recruits_history
|
||||
|
|
@ -65,12 +66,100 @@ registered as (
|
|||
where rh.status not in ('1', '1.3', '12', '12.1', '12.2', '12.3', '12.4', '12.5', '13') -- критерии от 03.06.2025
|
||||
--and rh.source is not null
|
||||
),
|
||||
vse AS (
|
||||
*/
|
||||
last_status_n as (select recruit_id,
|
||||
max(date_time) filter (where status in ('1', '12.7', '8.2', '8.3')) max_date_time
|
||||
from recruits_history
|
||||
where status in ('1', '12.7', '8.2', '8.3')
|
||||
group by recruit_id
|
||||
),
|
||||
notregistered as (
|
||||
select
|
||||
distinct rh.recruit_id,
|
||||
rh.id as recruit_history_id
|
||||
from recruits_history rh
|
||||
join last_status_n ls on rh.recruit_id=ls. recruit_id and rh.date_time=ls.max_date_time
|
||||
where rh.status in ('1', '12.7', '8.2', '8.3')
|
||||
--and rh.source is not null
|
||||
),
|
||||
recruit_data AS (
|
||||
SELECT
|
||||
r.id AS r_id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.gender,
|
||||
coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
'Весна' AS spring_autumn,
|
||||
r.birth_date,
|
||||
CASE
|
||||
WHEN ddd.hidden IS false THEN ddd.hidden
|
||||
ELSE true
|
||||
END AS hidden, -- когда фолс отсрочка есть, когда тру или нулл - нет
|
||||
ri.info
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
--JOIN public.recruits_history rh ON rh.recruit_id=r.id
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (PARTITION BY ddd.recruit_id ORDER BY COALESCE(ddd.updated_at, ddd.created_at) DESC) AS rn,
|
||||
ddd.recruit_id,
|
||||
ddd.hidden
|
||||
FROM decision_deferment_dto ddd
|
||||
WHERE ddd.hidden is true -- когда фолс отсрочка есть, когда тру или нулл - нет (для подсчета подпадающих под призыв)
|
||||
) ddd ON ddd.recruit_id = r.id AND ddd.rn = 1
|
||||
WHERE r.gender = 'MALE' AND
|
||||
/*
|
||||
r.id in (SELECT recruit_id FROM registered) and
|
||||
rh.id in (SELECT recruit_history_id FROM registered) and
|
||||
coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids WHERE spring_autumn = 'Весна')
|
||||
*/
|
||||
r.current_recruitment_id ::uuid IN (SELECT recruitment_id FROM ids WHERE spring_autumn = 'Весна')
|
||||
AND (r.birth_date BETWEEN DATE (extract(year from now())-30||'-04-02') and DATE (extract(year from now())-18||'-07-13'))
|
||||
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id AS r_id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.gender,
|
||||
--coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
r.current_recruitment_id AS recruitment_id,
|
||||
'Осень' AS spring_autumn,
|
||||
r.birth_date,
|
||||
CASE
|
||||
WHEN ddd.hidden IS false THEN ddd.hidden
|
||||
ELSE true
|
||||
END AS hidden, -- когда фолс отсрочка есть, когда тру или нулл - нет
|
||||
ri.info
|
||||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
--JOIN public.recruits_history rh ON rh.recruit_id=r.id
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (PARTITION BY ddd.recruit_id ORDER BY COALESCE(ddd.updated_at, ddd.created_at) DESC) AS rn,
|
||||
ddd.recruit_id,
|
||||
ddd.hidden
|
||||
FROM decision_deferment_dto ddd
|
||||
WHERE ddd.hidden is true -- когда фолс отсрочка есть, когда тру или нулл - нет (для подсчета подпадающих под призыв)
|
||||
) ddd ON ddd.recruit_id = r.id AND ddd.rn = 1
|
||||
WHERE r.gender = 'MALE' AND
|
||||
/*
|
||||
r.id in (SELECT recruit_id FROM registered) and
|
||||
rh.id in (SELECT recruit_history_id FROM registered) and
|
||||
coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids WHERE spring_autumn = 'Осень')
|
||||
*/
|
||||
r.current_recruitment_id ::uuid IN (SELECT recruitment_id FROM ids WHERE spring_autumn = 'Осень')
|
||||
AND (r.birth_date BETWEEN DATE (extract(year from now())-30||'-10-02') and DATE (extract(year from now())-18||'-12-30'))
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
r.id AS r_id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.gender,
|
||||
coalesce (r.target_recruitment_id, rh.target_recruitment_id) AS recruitment_id,
|
||||
--r.current_recruitment_id AS recruitment_id,
|
||||
'Весна' AS spring_autumn,
|
||||
r.birth_date,
|
||||
CASE
|
||||
|
|
@ -81,13 +170,23 @@ vse AS (
|
|||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
JOIN public.recruits_history rh ON rh.recruit_id=r.id
|
||||
LEFT JOIN public.decision_deferment_dto ddd ON ddd.recruit_id = r.id
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (PARTITION BY ddd.recruit_id ORDER BY COALESCE(ddd.updated_at, ddd.created_at) DESC) AS rn,
|
||||
ddd.recruit_id,
|
||||
ddd.hidden
|
||||
FROM decision_deferment_dto ddd
|
||||
WHERE ddd.hidden is true -- когда фолс отсрочка есть, когда тру или нулл - нет (для подсчета подпадающих под призыв)
|
||||
) ddd ON ddd.recruit_id = r.id AND ddd.rn = 1
|
||||
WHERE r.gender = 'MALE' AND
|
||||
r.id in (SELECT recruit_id FROM registered) and
|
||||
rh.id in (SELECT recruit_history_id FROM registered) and
|
||||
coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids WHERE spring_autumn = 'Весна')
|
||||
AND (r.birth_date BETWEEN DATE (extract(year from now())-30||'-04-02') and DATE (extract(year from now())-18||'-07-13'))
|
||||
|
||||
--/*
|
||||
r.id in (SELECT recruit_id FROM notregistered) and
|
||||
rh.id in (SELECT recruit_history_id FROM notregistered) and
|
||||
coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids WHERE spring_autumn = 'Весна')
|
||||
--*/
|
||||
--AND r.current_recruitment_id ::uuid IN (SELECT recruitment_id FROM ids WHERE spring_autumn = 'Весна')
|
||||
AND (r.birth_date BETWEEN DATE (extract(year from now())-30||'-04-02') and DATE (extract(year from now())-18||'-07-13'))
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
UNION ALL
|
||||
|
||||
|
|
@ -95,7 +194,8 @@ vse AS (
|
|||
r.id AS r_id,
|
||||
ri.recruit_id AS recruit_id,
|
||||
r.gender,
|
||||
coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
|
||||
coalesce (r.target_recruitment_id, rh.target_recruitment_id) AS recruitment_id,
|
||||
--r.current_recruitment_id AS recruitment_id,
|
||||
'Осень' AS spring_autumn,
|
||||
r.birth_date,
|
||||
CASE
|
||||
|
|
@ -106,23 +206,80 @@ vse AS (
|
|||
FROM public.recruits AS r
|
||||
JOIN public.recruits_info AS ri ON ri.recruit_id = r.id
|
||||
JOIN public.recruits_history rh ON rh.recruit_id=r.id
|
||||
LEFT JOIN public.decision_deferment_dto ddd ON ddd.recruit_id = r.id
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (PARTITION BY ddd.recruit_id ORDER BY COALESCE(ddd.updated_at, ddd.created_at) DESC) AS rn,
|
||||
ddd.recruit_id,
|
||||
ddd.hidden
|
||||
FROM decision_deferment_dto ddd
|
||||
WHERE ddd.hidden is true -- когда фолс отсрочка есть, когда тру или нулл - нет (для подсчета подпадающих под призыв)
|
||||
) ddd ON ddd.recruit_id = r.id AND ddd.rn = 1
|
||||
WHERE r.gender = 'MALE' AND
|
||||
r.id in (SELECT recruit_id FROM registered) and
|
||||
rh.id in (SELECT recruit_history_id FROM registered) and
|
||||
coalesce(r.current_recruitment_id,rh.current_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids WHERE spring_autumn = 'Осень')
|
||||
AND (r.birth_date BETWEEN DATE (extract(year from now())-30||'-10-02') and DATE (extract(year from now())-18||'-12-30'))
|
||||
--/*
|
||||
r.id in (SELECT recruit_id FROM notregistered) and
|
||||
rh.id in (SELECT recruit_history_id FROM notregistered) and
|
||||
coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids WHERE spring_autumn = 'Осень')
|
||||
--*/
|
||||
--AND r.current_recruitment_id ::uuid IN (SELECT recruitment_id FROM ids WHERE spring_autumn = 'Осень')
|
||||
AND (r.birth_date BETWEEN DATE (extract(year from now())-30||'-10-02') and DATE (extract(year from now())-18||'-12-30'))
|
||||
AND r.current_recruitment_id is null
|
||||
|
||||
),
|
||||
vse as (
|
||||
SELECT
|
||||
rd.hidden as postponement,
|
||||
'Весна' AS spring_autumn,
|
||||
--COALESCE(dd.updated_at, dd.created_at) AS postponement_date,
|
||||
r.recruit_id,
|
||||
rd.postponement_date,
|
||||
r.recruitment_id,
|
||||
r.hidden
|
||||
FROM recruit_data r
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (PARTITION BY rd.recruit_id ORDER BY COALESCE(rd.system_update_date, rd.system_create_date) DESC) AS rn,
|
||||
rd.recruit_id,
|
||||
rd.hidden,
|
||||
rd.postponement_date
|
||||
FROM recruits_deferment rd
|
||||
WHERE rd.hidden is false
|
||||
AND (rd.postponement_date > DATE_TRUNC('year', CURRENT_DATE) + INTERVAL '6 months' + INTERVAL '14 days')
|
||||
-- AND (rd.postponement_date > DATE_TRUNC('year', CURRENT_DATE) + INTERVAL '12 months')
|
||||
) rd on rd.recruit_id = r.recruit_id AND rd.rn = 1
|
||||
WHERE r.spring_autumn = 'Весна'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
rd.hidden as postponement,
|
||||
'Осень' AS spring_autumn,
|
||||
--COALESCE(dd.updated_at, dd.created_at) AS postponement_date,
|
||||
r.recruit_id,
|
||||
rd.postponement_date,
|
||||
r.recruitment_id,
|
||||
r.hidden
|
||||
FROM recruit_data r
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (PARTITION BY rd.recruit_id ORDER BY COALESCE(rd.system_update_date, rd.system_create_date) DESC) AS rn,
|
||||
rd.recruit_id,
|
||||
rd.hidden,
|
||||
rd.postponement_date
|
||||
FROM recruits_deferment rd
|
||||
WHERE rd.hidden is false
|
||||
-- AND (rs.postponement_date > DATE_TRUNC('year', CURRENT_DATE) + INTERVAL '6 months' + INTERVAL '14 days')
|
||||
AND (rd.postponement_date > DATE_TRUNC('year', CURRENT_DATE) + INTERVAL '12 months')
|
||||
) rd on rd.recruit_id = r.recruit_id AND rd.rn = 1
|
||||
WHERE r.spring_autumn = 'Осень'
|
||||
)
|
||||
SELECT
|
||||
ri.recruitment_id,
|
||||
ri.spring_autumn,
|
||||
current_date AS recording_date,
|
||||
COUNT(DISTINCT ri.recruit_id) FILTER (
|
||||
WHERE
|
||||
ri.hidden IS true -- нет отсрочки и нет освобождения от службы
|
||||
) AS recruit
|
||||
FROM vse AS ri
|
||||
GROUP BY ri.recruitment_id, ri.spring_autumn</sql>
|
||||
r.recruitment_id,
|
||||
r.spring_autumn,
|
||||
current_date as recording_date,
|
||||
COUNT(r.recruit_id) FILTER (WHERE r.hidden IS NOT true) AS recruit,
|
||||
COUNT(r.recruit_id) FILTER (WHERE r.postponement IS NOT null) AS postponement_have_right
|
||||
FROM vse r
|
||||
GROUP BY recruitment_id, spring_autumn</sql>
|
||||
<variables_active>Y</variables_active>
|
||||
<attributes/>
|
||||
<GUI>
|
||||
|
|
@ -144,25 +301,21 @@ GROUP BY ri.recruitment_id, ri.spring_autumn</sql>
|
|||
<commit>100</commit>
|
||||
<connection>ervu-dashboard</connection>
|
||||
<error_ignored>N</error_ignored>
|
||||
<ignore_flag_field/>
|
||||
<lookup>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>recruitment_id</field>
|
||||
<name>recruitment_id</name>
|
||||
<name2/>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>spring_autumn</field>
|
||||
<name>spring_autumn</name>
|
||||
<name2/>
|
||||
</key>
|
||||
<key>
|
||||
<condition>=</condition>
|
||||
<field>recording_date</field>
|
||||
<name>recording_date</name>
|
||||
<name2/>
|
||||
</key>
|
||||
<schema>main_dashboard</schema>
|
||||
<table>recruitment_campaign</table>
|
||||
|
|
@ -170,6 +323,10 @@ GROUP BY ri.recruitment_id, ri.spring_autumn</sql>
|
|||
<name>new_recruits</name>
|
||||
<rename>recruit</rename>
|
||||
</value>
|
||||
<value>
|
||||
<name>postponement_have_right</name>
|
||||
<rename>postponement_have_right</rename>
|
||||
</value>
|
||||
</lookup>
|
||||
<skip_lookup>N</skip_lookup>
|
||||
<use_batch>N</use_batch>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue