Построение ежемесячного агрегата из ежедневной таблицы - PullRequest
0 голосов
/ 17 мая 2018

Я написал код ниже, чтобы проверить уникальных клиентов за последние 30 дней.Как бы я использовал этот код для проверки уникальных клиентов на дату начала месяца.Я пытаюсь построить ежемесячный агрегат, используя table_billing, который имеет дневное зерно.Можете ли вы направить меня.

select 'context.processingDate' as rptg_dt, COALESCE(item_type,'ALL_ITEMS') as item_type, unique_customers
from (select 
        (case when item_type_code in ('A') then 'Books'
         when item_type_code in ('B','C') then 'Toys'
         else 'Fruits' end
         ) as item_type,
        count(distinct person_id) as unique_customers
      from table_billing
      where rptg_dt between cast('context.processingDate' as date format 'YYYY-MM-DD')-30 
        AND cast('context.processingDate' as date format 'YYYY-MM-DD')
        and item_type_code in ('A','B','C','D','E')
      group by CUBE(1)
    ) a;

Желаемый результат:

Monthly Start Date    | Item Type     | Unique Customers

5/1/14                | Books            | 100

5/1/14                | Toys             | 80

5/1/14                | Fruits           | 25

5/1/14                | ALL_ITEMS        | 175

6/1/14                | Books            | 80

6/1/14                | Toys             | 60

6/1/14                | Fruits           | 40

6/1/14                | ALL_ITEMS        | 95

Я хочу переписать этот запрос следующим образом:

select 'context.processingDate' as month_start_dt, 
COALESCE(item_type,'ALL_ITEMS') as item_type, unique_customers
from (select 
(case when item_type_code in ('A') then 'Books'
when item_type_code in ('B','C') then 'Toys'
else 'Fruits' end
) as item_type,
count(distinct person_id) as unique_customers
from table_billing
where month_start_dt = cast('context.processingDate' as date format'YYYY-MM-DD') and item_type_code in ('A','B','C','D','E') group by CUBE(1)) a;

Как мне настроить запрос, чтобы сделатьэто возможно?Спасибо!

...