I have a table like so –
x
patient_id date org
I5434 2020-06-05 Methodist Hospital
ertw4 2020-08-03 New York Hospital
ouiku35 2020-08-30 Tristar
ouiku35 2020-01-05 Tristar
ouiku35 2020-04-22 Tristar
The output I am needing is
quarter count
2020Q1 1
2020Q2 1
2020Q3 1
3rd record in the table above is not counted because it is the same patient in prior quarters at the same hospital
Advertisement
Answer
We can try using a calendar table approach here:
WITH quarters AS (
SELECT 2020 AS year, 1 AS quarter, '2020Q1' AS label UNION ALL
SELECT 2020, 2, '2020Q2' UNION ALL
SELECT 2020, 3, '2020Q3' UNION ALL
SELECT 2020, 4, '2020Q4'
)
SELECT q.label, COUNT(t.date) AS count
FROM quarters q
LEFT JOIN yourTable t
ON EXTRACT(year FROM t.date) = q.year AND
EXTRACT(quarter FROM t.date) = q.quarter
GROUP BY q.label
ORDER BY q.label;