This commit is contained in:
Ruslan 2025-03-17 15:09:34 +03:00
parent a494afca1c
commit f47355f466
3 changed files with 47 additions and 25 deletions

View file

@ -251,17 +251,19 @@ notregistered as (
--and rh.source is not null
),
total_recruits AS (
SELECT COUNT(distinct r.id) AS total_count
SELECT COUNT(distinct ri.recruit_id) AS total_count
FROM public.recruits AS r
join public.recruits_history rh on rh.recruit_id=r.id
JOIN public.recruits_info AS ri
ON ri.recruit_id = r.id
WHERE
r.id in (SELECT recruit_id FROM notregistered) and
rh.id in (SELECT recruit_history_id FROM notregistered) and
coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
AND r.current_recruitment_id is null
),
vse AS (
SELECT
distinct
r.id AS r_id,
ri.recruit_id AS recruit_id,
coalesce (r.target_recruitment_id, rh.target_recruitment_id) AS r_target_recruitment_id,

View file

@ -318,9 +318,9 @@ registered as (
--and rh.source is not null
),
last_status_n as (select recruit_id,
max(date_time) filter (where status in ('1', '1.1', '12.2', '12.10')) max_date_time
max(date_time) filter (where status in ('1', '12.7', '8.2', '8.3')) max_date_time
from recruits_history
where status in ('1', '1.1', '12.2', '12.10')
where status in ('1', '12.7', '8.2', '8.3')
group by recruit_id
),
notregistered as (
@ -329,7 +329,7 @@ notregistered as (
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', '1.1', '12.2', '12.10')
where rh.status in ('1', '12.7', '8.2', '8.3')
--and rh.source is not null
),
recruit_data AS (
@ -373,7 +373,8 @@ recruit_data AS (
r.id in (SELECT recruit_id FROM notregistered) and
rh.id in (SELECT recruit_history_id FROM notregistered)
and coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
AND r.current_recruitment_id is null
UNION ALL
SELECT
@ -391,6 +392,7 @@ recruit_data AS (
r.id in (SELECT recruit_id FROM notregistered) and
rh.id in (SELECT recruit_history_id FROM notregistered)
and coalesce(r.target_recruitment_id,rh.target_recruitment_id) ::uuid IN (SELECT recruitment_id FROM ids)
AND r.current_recruitment_id is null
UNION ALL
@ -418,7 +420,7 @@ total_count AS (
rd.gender,
rd.registered,
rd.convicts,
COUNT(rd.recruit_id) AS total
COUNT(distinct rd.recruit_id) AS total
FROM recruit_data rd
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
),
@ -427,7 +429,7 @@ total_count_all AS (
rd.recruitment_id,
rd.registered,
rd.convicts,
COUNT(rd.recruit_id) AS total
COUNT(distinct rd.recruit_id) AS total
FROM recruit_data rd
GROUP BY rd.recruitment_id, rd.registered, rd.convicts
),
@ -437,14 +439,14 @@ age_counts AS (
rd.gender,
rd.registered,
rd.convicts,
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) = 17) AS "17_year_count",
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
COUNT(rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) >= 51) AS "51+_year_count"
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) = 17) AS "17_year_count",
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
COUNT(distinct rd.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(rd.birth_date)) >= 51) AS "51+_year_count"
FROM recruit_data rd
GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
),
@ -453,14 +455,14 @@ age_counts_all AS (
r.recruitment_id,
r.registered,
r.convicts,
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
COUNT(r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) >= 51) AS "51+_year_count"
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
COUNT(distinct r.recruit_id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) >= 51) AS "51+_year_count"
FROM recruit_data r
GROUP BY r.recruitment_id, r.registered, r.convicts
)

View file

@ -283,7 +283,7 @@ vse AS (
r.gender,
CASE
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
ELSE 'ALL'
ELSE 'NOTCONVICT'
END AS convicts,
ri.info
FROM public.recruits AS r
@ -294,6 +294,24 @@ vse AS (
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)
AND r.gender IN ('MALE', 'FEMALE')
UNION ALL
SELECT
r.id,
ri.recruit_id,
COALESCE(r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
r.gender,
'ALL' AS convicts,
ri.info
FROM public.recruits AS r
JOIN public.recruits_info ri ON ri.recruit_id = r.id
JOIN public.recruits_history rh ON rh.recruit_id = r.id
WHERE
r.id IN (SELECT recruit_id FROM 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)
AND r.gender IN ('MALE', 'FEMALE')
),
extracted_children AS(
SELECT