You are on page 1of 2

SELECT Year_to, Compliance_Status, denominator, Total_in_year, Monthly_avg FROM

-- Find monthly average of review activities due in year to end of Jan 2022
(Select 'Jan 2022' as Year_to, ra.Compliance_Status, Count(distinct due_month) as
denominator, Count(distinct ra.id) as Total_in_year, round((Count(distinct
ra.id)::int::float) / Count(distinct due_month)) as Monthly_avg
FROM (
Select g.id, g.therapy, EXTRACT(MONTH FROM cast(g.activity_due_date as date))
as due_month, g.status, g.activity_completed,g.activity_due_date,
(case when (g.activity_completed is null) or g.activity_completed::date
>to_date ('2022-01-31', 'yyyy-mm-dd') then 'Overdue/Late'
when g.activity_completed::date <= g.activity_due_date::date then 'On Time'
else 'Overdue/Late' end) as Compliance_status
FROM
(SELECT a.id, p.group_name as therapy, a.activity_due_date,
a.activity_completed, a.status
FROM tracker_cust.review_activity_instance a
JOIN tracker_cust.review_activity_definition d on d.id =
a.review_activity_definition_id
JOIN tracker_cust.project_group p on p.id= d.project_group_id
JOIN tracker_cust.project_core c on c.proj_group_id = p.id
WHERE a.activity_due_date >= '2021-02-01' and a.activity_due_date <= '2022-
01-31'
and p. registered_yn = 'Y' and a.status <> 'Canceled' and p.disabled_yn='N' )
g ) ra
GROUP BY ra.Compliance_Status) as Aug
UNION
-- Find monthly average of review activities due in year to end of Dec 2021
(Select 'Dec 2021' as Year_to, ra.Compliance_Status, Count(distinct due_month) as
denominator, Count(distinct ra.id) as Total_in_year, round((Count(distinct
ra.id)::int::float) / Count(distinct due_month)) as Monthly_avg
FROM (
Select g.id, g.therapy, EXTRACT(MONTH FROM cast(g.activity_due_date as date))
as due_month, g.status, g.activity_completed, g.activity_due_date,
(case when (g.activity_completed is null) or g.activity_completed::date >
to_date('2021-12-31', 'yyyy-mm-dd') then 'Overdue/Late'
when g.activity_completed::date <= g.activity_due_date::date then 'On Time'
else 'Overdue/Late' end) as Compliance_status
FROM
(SELECT a.id, p.group_name as therapy, a.activity_due_date,
a.activity_completed, a.status
FROM tracker_cust.review_activity_instance a
JOIN tracker_cust.review_activity_definition d on d.id =
a.review_activity_definition_id
JOIN tracker_cust.project_group p on p.id= d.project_group_id
WHERE a.activity_due_date >= '2020-01-01' and a.activity_due_date <= '2021-
12-31'
and p. registered_yn = 'Y' and a.status <> 'Canceled' and p.disabled_yn='N')
g ) ra
GROUP BY ra.Compliance_Status)
UNION
-- Find monthly average of review activities due in year to end of Nov 2021
(Select 'Nov 2021' as Year_to, ra.Compliance_Status, Count(distinct due_month) as
denominator, Count(distinct ra.id) as Total_in_year, round((Count(distinct
ra.id)::int::float) / Count(distinct due_month)) as Monthly_avg
FROM (
Select g.id, g.therapy, EXTRACT(MONTH FROM cast(g.activity_due_date as date))
as due_month, g.status, g.activity_completed, g.activity_due_date,
(case when (g.activity_completed is null) or g.activity_completed::date >
to_date('2021-11-30', 'yyyy-mm-dd') then 'Overdue/Late'
when g.activity_completed::date <= g.activity_due_date::date then 'On Time'
else 'Overdue/Late' end) as Compliance_status
FROM
(SELECT a.id, p.group_name as therapy, a.activity_due_date,
a.activity_completed, a.status
FROM tracker_cust.review_activity_instance a
JOIN tracker_cust.review_activity_definition d on d.id =
a.review_activity_definition_id
JOIN tracker_cust.project_group p on p.id= d.project_group_id
WHERE a.activity_due_date >= '2020-12-01' and a.activity_due_date <= '2021-
11-30'
and p. registered_yn = 'Y' and a.activity_canceled is null and
p.disabled_yn='N') g) ra
GROUP BY ra.Compliance_Status)
ORDER BY Year_to, Compliance_Status;

You might also like