diff --git a/v1_apache-hop dash mapping/job_general.hwf b/v1_apache-hop dash mapping/job_general.hwf
index 4135a35..815d492 100644
--- a/v1_apache-hop dash mapping/job_general.hwf
+++ b/v1_apache-hop dash mapping/job_general.hwf
@@ -134,32 +134,8 @@
N
Y
N
- 896
- 368
-
-
-
- job_predictive.hwf
-
- WORKFLOW
-
- N
- N
- N
- N
- ${PROJECT_HOME}/predictive/job_predictive.hwf
- Nothing
-
- Y
-
- N
- local
- N
- N
- Y
- N
- 1072
- 128
+ 944
+ 240
@@ -192,20 +168,6 @@
N
Y
-
- job_info_recruits.hwf
- job_predictive.hwf
- N
- N
- Y
-
-
- job_predictive.hwf
- job_last_recording_date
- N
- Y
- Y
-
job_info_recruits.hwf
job_last_recording_date
diff --git a/v1_apache-hop dash mapping/mil_com/total_registered.age(m_c).hpl b/v1_apache-hop dash mapping/mil_com/total_registered.age(m_c).hpl
index 5e40285..b3640fa 100644
--- a/v1_apache-hop dash mapping/mil_com/total_registered.age(m_c).hpl
+++ b/v1_apache-hop dash mapping/mil_com/total_registered.age(m_c).hpl
@@ -41,26 +41,6 @@
Insert / update (total_registered.age) 2
Y
-
- Get variables 3 2 2 2
- Select values 3 2 2 2
- N
-
-
- Select values 3 2 2 2
- Insert / update (total_registered.age) 2 2
- N
-
-
- Table input (person_registry) регион/мужчины 2
- Get variables 3 2 2 2
- N
-
-
- Table input (person_registry) регион/мужчины 2
- Insert / update (total_registered.age) 2 2
- N
-
Get variables 3 2 2
@@ -95,39 +75,6 @@
800
-
- Get variables 3 2 2 2
- GetVariable
-
- Y
-
- 1
-
- none
-
-
-
-
- -1
- REC_ID
- -1
- none
- String
-
-
- -1
- SCM
- -1
- none
- String
-
-
-
-
- 1536
- 1008
-
-
Insert / update (total_registered.age) 2
InsertUpdate
@@ -282,160 +229,6 @@
720
-
- Insert / update (total_registered.age) 2 2
- InsertUpdate
-
- Y
-
- 1
-
- none
-
-
- 100
- ervu-dashboard
-
-
- =
- recruitment_id
- recruitment_id
-
-
- =
- recording_date
- recording_date
-
-
- =
- registered
- registered
-
-
- =
- "all_M_W"
- gender
-
-
- =
- convicts
- convicts
-
- total_registered
-
-
- "17_years"
- 17_year_count
- Y
-
-
- "18-26_years"
- 18-26_year_count
- Y
-
-
- "27-30_years"
- 27-30_year_count
- Y
-
-
- "31-35_years"
- 31-35_year_count
- Y
-
-
- "36-40_years"
- 36-40_year_count
- Y
-
-
- "41-45_years"
- 41-45_year_count
- Y
-
-
- "51+_years"
- 41-45_year_count
- Y
-
-
- "all_M_W"
- gender
- N
-
-
- "46-50_years"
- 46-50_year_count
- Y
-
-
- "17_years_percent"
- 17_year_percent
- Y
-
-
- "18-26_years_percent"
- 18-26_year_percent
- Y
-
-
- "27-30_years_percent"
- 27-30_year_percent
- Y
-
-
- "31-35_years_percent"
- 31-35_year_percent
- Y
-
-
- "36-40_years_percent"
- 36-40_year_percent
- Y
-
-
- "41-45_years_percent"
- 41-45_year_percent
- Y
-
-
- "46-50_years_percent"
- 46-50_year_percent
- Y
-
-
- "51+_years_percent"
- 51+_year_percent
- Y
-
-
- recruitment_id
- recruitment_id
- N
-
-
- registered
- registered
- N
-
-
- total_count
- total_count
- Y
-
-
- convicts
- convicts
- N
-
-
- Y
-
-
- 1920
- 928
-
-
Select values 3 2 2
SelectValues
@@ -490,60 +283,6 @@
800
-
- Select values 3 2 2 2
- SelectValues
-
- Y
-
- 1
-
- none
-
-
-
- N
-
- REC_ID
- REC_ID
- String
- -2
- -2
-
- false
-
-
- false
-
-
-
-
-
-
-
- SCM
- SCM
- String
- -2
- -2
-
- false
-
-
- false
-
-
-
-
-
-
-
-
-
- 1680
- 1008
-
-
Table input (person_registry) регион/мужчины
TableInput
@@ -563,46 +302,103 @@ ids AS (
-- Преобразуем строковый массив в таблицу UUID
SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id
),
+last_status_r 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
+ where status not in ('1', '1.3', '12', '12.1', '12.2', '12.3', '12.4', '12.5', '13')
+ group by recruit_id
+),
+registered as (
+ select
+ distinct rh.recruit_id,
+ rh.id as recruit_history_id
+ from recruits_history rh
+ join last_status_r ls on rh.recruit_id=ls.recruit_id and rh.date_time=ls.max_date_time
+ where rh.status not in ('1', '1.3', '12', '12.1', '12.2', '12.3', '12.4', '12.5', '13')
+ --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
+ from recruits_history
+ where status in ('1', '1.1', '12.2', '12.10')
+ 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', '1.1', '12.2', '12.10')
+--and rh.source is not null
+),
recruit_data AS (
SELECT
- r.target_recruitment_id,
+ distinct
+ r.id,
+ ri.recruit_id AS recruit_id,
+ coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
r.gender,
- r.vu_current_info->>'isMilitaryRegistered' AS registered,
- r.id AS recruit_id,
+ CASE
+ WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
+ ELSE 'ALL'
+ END AS convicts,
+ 'true' AS registered,
r.birth_date
- FROM public.recruits r
- LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
- WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
- AND r.gender IN ('MALE', 'FEMALE')
- AND r.current_recruitment_id IS NOT NULL
- AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
+ 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
+ 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)
+ UNION ALL
+ SELECT
+ distinct
+ r.id,
+ ri.recruit_id AS recruit_id,
+ coalesce (r.target_recruitment_id, rh.target_recruitment_id) AS recruitment_id,
+ r.gender,
+ CASE
+ WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
+ ELSE 'ALL'
+ END AS convicts,
+ 'false' AS registered,
+ r.birth_date
+ 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
+ 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)
),
total_count AS (
SELECT
- rd.target_recruitment_id as recruitment_id,
+ rd.recruitment_id,
rd.gender,
rd.registered,
+ rd.convicts,
COUNT(rd.recruit_id) AS total
FROM recruit_data rd
- GROUP BY rd.target_recruitment_id, rd.gender, rd.registered
+ GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
),
total_count_all AS (
SELECT
- r.target_recruitment_id AS recruitment_id,
- r.vu_current_info->>'isMilitaryRegistered' AS registered,
- COUNT(r.id) AS total
- FROM public.recruits r
- LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
- WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
- AND r.current_recruitment_id IS NOT NULL
- AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
- GROUP BY r.target_recruitment_id, r.vu_current_info->>'isMilitaryRegistered'
+ rd.recruitment_id,
+ rd.registered,
+ rd.convicts,
+ COUNT(rd.recruit_id) AS total
+ FROM recruit_data rd
+ GROUP BY rd.recruitment_id, rd.registered, rd.convicts
),
age_counts AS (
SELECT
- rd.target_recruitment_id as recruitment_id,
+ rd.recruitment_id,
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",
@@ -612,26 +408,23 @@ age_counts AS (
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"
FROM recruit_data rd
- GROUP BY rd.target_recruitment_id, rd.gender, rd.registered
+ GROUP BY rd.recruitment_id, rd.gender, rd.registered, rd.convicts
),
age_counts_all AS (
SELECT
- r.target_recruitment_id AS recruitment_id,
- r.vu_current_info->>'isMilitaryRegistered' AS registered,
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) >= 51) AS "51+_year_count"
- FROM public.recruits r
- LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
- WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
- AND r.current_recruitment_id IS NOT NULL
- AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
- GROUP BY r.target_recruitment_id, r.vu_current_info->>'isMilitaryRegistered'
+ 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"
+ FROM recruit_data r
+ GROUP BY r.recruitment_id, r.registered, r.convicts
)
SELECT
current_date AS recording_date,
@@ -657,13 +450,14 @@ SELECT
WHEN tc.gender = 'MALE' THEN 'M'
ELSE 'W'
END)::text AS gender,
- 'ALL' AS convicts,
+ tc.convicts,
tc.registered::text
FROM total_count tc
LEFT JOIN age_counts ac
ON ac.recruitment_id = tc.recruitment_id
AND ac.gender = tc.gender
AND ac.registered = tc.registered
+ AND ac.convicts = tc.convicts
UNION ALL
SELECT
current_date AS recording_date,
@@ -686,12 +480,13 @@ SELECT
COALESCE(tca.total, 0) AS total_count,
tca.recruitment_id,
'ALL' AS gender,
- 'ALL' AS convicts,
+ tca.convicts,
tca.registered::text
FROM total_count_all tca
LEFT JOIN age_counts_all aca
ON aca.recruitment_id = tca.recruitment_id
- AND aca.registered = tca.registered
+ AND aca.registered = tca.registered
+ AND aca.convicts = tca.convicts
Y
@@ -699,201 +494,6 @@ LEFT JOIN age_counts_all aca
720
-
- Table input (person_registry) регион/мужчины 2
- TableInput
-
- Y
-
- 1
-
- none
-
-
- ervu_person_registry
- N
- 0
- WITH
-ids AS (
- -- Преобразуем строковый массив в таблицу UUID
- SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id
-),
-gender_separations AS (
- SELECT 'MALE' AS gender
- UNION ALL
- SELECT 'FEMALE' AS gender
-),
-registered_separation AS (
- SELECT 'true' AS registered
- UNION ALL
- SELECT 'false' AS registered
-),
-data_combinations AS (
- -- Создаём все комбинации recruitment_id, gender и registered
- SELECT
- i.recruitment_id AS recruitment_id,
- gs.gender,
- rs.registered
- FROM ids i
- CROSS JOIN gender_separations gs
- CROSS JOIN registered_separation rs
-),
-recruit_data AS (
- SELECT
- r.target_recruitment_id,
- r.gender,
- r.vu_current_info->>'isMilitaryRegistered' AS registered,
- r.id AS recruit_id,
- r.birth_date
- FROM public.recruits r
- LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
- WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
- AND r.gender IN ('MALE', 'FEMALE')
- AND r.current_recruitment_id IS NOT NULL
- AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
- AND r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
-),
-total_count AS (
- SELECT
- dc.recruitment_id,
- dc.gender,
- dc.registered,
- COUNT(rd.recruit_id) AS total
- FROM data_combinations dc
- LEFT JOIN recruit_data rd
- ON rd.target_recruitment_id = dc.recruitment_id
- AND rd.gender = dc.gender
- AND rd.registered = dc.registered
- GROUP BY dc.recruitment_id, dc.gender, dc.registered
-),
-total_count_all AS (
- SELECT
- r.target_recruitment_id AS recruitment_id,
- r.vu_current_info->>'isMilitaryRegistered' AS registered,
- COUNT(r.id) AS total
- FROM public.recruits r
- LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
- WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
- AND r.current_recruitment_id IS NOT NULL
- AND r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
- AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
- GROUP BY r.target_recruitment_id, r.vu_current_info->>'isMilitaryRegistered'
-),
-age_counts AS (
- SELECT
- dc.recruitment_id,
- dc.gender,
- dc.registered,
- 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"
- FROM data_combinations dc
- LEFT JOIN recruit_data rd
- ON rd.target_recruitment_id = dc.recruitment_id
- AND rd.gender = dc.gender
- AND rd.registered = dc.registered
- GROUP BY dc.recruitment_id, dc.gender, dc.registered
-),
-age_counts_all AS (
- SELECT
- r.target_recruitment_id AS recruitment_id,
- r.vu_current_info->>'isMilitaryRegistered' AS registered,
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) = 17) AS "17_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 18 AND 26) AS "18-26_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 27 AND 30) AS "27-30_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 31 AND 35) AS "31-35_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 36 AND 40) AS "36-40_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 41 AND 45) AS "41-45_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) BETWEEN 46 AND 50) AS "46-50_year_count",
- COUNT(r.id) FILTER (WHERE EXTRACT(YEAR FROM AGE(r.birth_date)) >= 51) AS "51+_year_count"
- FROM public.recruits r
- LEFT JOIN public.recruits_info ri ON ri.recruit_id = r.id
- WHERE r.vu_current_info->>'isMilitaryRegistered' IN ('true', 'false')
- AND r.current_recruitment_id IS NOT NULL
- AND r.vu_current_info->>'recruitmentCommercialInfo' = 'true'
- AND r.target_recruitment_id::uuid IN (SELECT recruitment_id FROM ids)
- GROUP BY r.target_recruitment_id, r.vu_current_info->>'isMilitaryRegistered'
-)
-SELECT
- current_date AS recording_date,
- COALESCE(ac."17_year_count", 0) AS "17_year_count",
- COALESCE(ROUND((COALESCE(ac."17_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "17_year_percent",
- COALESCE(ac."18-26_year_count", 0) AS "18-26_year_count",
- COALESCE(ROUND((COALESCE(ac."18-26_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "18-26_year_percent",
- COALESCE(ac."27-30_year_count", 0) AS "27-30_year_count",
- COALESCE(ROUND((COALESCE(ac."27-30_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "27-30_year_percent",
- COALESCE(ac."31-35_year_count", 0) AS "31-35_year_count",
- COALESCE(ROUND((COALESCE(ac."31-35_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "31-35_year_percent",
- COALESCE(ac."36-40_year_count", 0) AS "36-40_year_count",
- COALESCE(ROUND((COALESCE(ac."36-40_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "36-40_year_percent",
- COALESCE(ac."41-45_year_count", 0) AS "41-45_year_count",
- COALESCE(ROUND((COALESCE(ac."41-45_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "41-45_year_percent",
- COALESCE(ac."46-50_year_count", 0) AS "46-50_year_count",
- COALESCE(ROUND((COALESCE(ac."46-50_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "46-50_year_percent",
- COALESCE(ac."51+_year_count", 0) AS "51+_year_count",
- COALESCE(ROUND((COALESCE(ac."51+_year_count", 0) * 100.0) / NULLIF(tc.total, 0), 2), 0) AS "51+_year_percent",
- COALESCE(tc.total, 0) AS total_count,
- dc.recruitment_id,
- (CASE
- WHEN dc.gender = 'MALE' THEN 'M'
- WHEN dc.gender = 'FEMALE' THEN 'W'
- ELSE null
- END)::text AS gender,
- 'CONVICT' AS convicts,
- dc.registered::text
-FROM data_combinations dc
-LEFT JOIN total_count tc
- ON tc.recruitment_id = dc.recruitment_id
- AND tc.gender = dc.gender
- AND tc.registered = dc.registered
-LEFT JOIN age_counts ac
- ON ac.recruitment_id = dc.recruitment_id
- AND ac.gender = dc.gender
- AND ac.registered = dc.registered
-UNION ALL
-SELECT
- current_date AS recording_date,
- COALESCE(aca."17_year_count", 0) AS "17_year_count",
- COALESCE(ROUND((COALESCE(aca."17_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "17_year_percent",
- COALESCE(aca."18-26_year_count", 0) AS "18-26_year_count",
- COALESCE(ROUND((COALESCE(aca."18-26_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "18-26_year_percent",
- COALESCE(aca."27-30_year_count", 0) AS "27-30_year_count",
- COALESCE(ROUND((COALESCE(aca."27-30_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "27-30_year_percent",
- COALESCE(aca."31-35_year_count", 0) AS "31-35_year_count",
- COALESCE(ROUND((COALESCE(aca."31-35_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "31-35_year_percent",
- COALESCE(aca."36-40_year_count", 0) AS "36-40_year_count",
- COALESCE(ROUND((COALESCE(aca."36-40_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "36-40_year_percent",
- COALESCE(aca."41-45_year_count", 0) AS "41-45_year_count",
- COALESCE(ROUND((COALESCE(aca."41-45_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "41-45_year_percent",
- COALESCE(aca."46-50_year_count", 0) AS "46-50_year_count",
- COALESCE(ROUND((COALESCE(aca."46-50_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "46-50_year_percent",
- COALESCE(aca."51+_year_count", 0) AS "51+_year_count",
- COALESCE(ROUND((COALESCE(aca."51+_year_count", 0) * 100.0) / NULLIF(tca.total, 0), 2), 0) AS "51+_year_percent",
- COALESCE(tca.total, 0) AS total_count,
- dc.recruitment_id,
- 'ALL' AS gender,
- 'CONVICT' AS convicts,
- dc.registered::text
-FROM data_combinations dc
-LEFT JOIN total_count_all tca
- ON tca.recruitment_id = dc.recruitment_id
- AND tca.registered = dc.registered
-LEFT JOIN age_counts_all aca
- ON aca.recruitment_id = dc.recruitment_id
- AND aca.registered = dc.registered
-
- Y
-
-
- 1296
- 928
-
-