Многочисленные различия в Impala - PullRequest
0 голосов
/ 24 сентября 2018

Мне нужно выяснить разницу между количеством разных пациентов между заданными периодами времени.

таблица в импале в формате паркета.

Есть ли лучший способ написать этот запрос.оба запроса на выборку используют одну и ту же таблицу.

пациент должен быть посчитан только один раз за заданный набор периодов времени

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
...