Мне нужно выяснить разницу между количеством разных пациентов между заданными периодами времени.
таблица в импале в формате паркета.
Есть ли лучший способ написать этот запрос.оба запроса на выборку используют одну и ту же таблицу.
пациент должен быть посчитан только один раз за заданный набор периодов времени
WITH
curr_prod AS
(
SELECT product
,COUNT(DISTINCT(patient_id)) AS rawPatientCount
FROM tbl
WHERE time_seq_id IN (12,11,10)
GROUP BY product
)
,prev_prod AS
(
SELECT product
,COUNT(DISTINCT(patient_id)) AS rawPatientCount
FROM tbl
WHERE time_seq_id in (7,8,9)
GROUP BY product
)
SELECT COALESCE(curr_prod.product,prev_prod.product) AS product,
,curr_prod.rawPatientCount-prev_prod.rawPatientcount AS change_pat_cnt
FROM curr_prod
FULL OUTER JOIN prev_prod ON curr_prod.product=prev_prod.product