Как выполнить запрос в SQL в базе данных Athena, который возвращает данные, сгруппированные по месяцам? - PullRequest
0 голосов
/ 16 января 2020

Я борюсь с этим запросом, чтобы получать мои данные, сгруппированные по месяцам, а не по дням. Сейчас он дает мне результаты за каждый день для каждого кода продукта, что делает мой файл Excel слишком большим для отправки по электронной почте.

SELECT line_item_usage_account_id,  
line_item_product_code, 
         SUM(line_item_unblended_cost) AS cost, 
         SUM(CASE   
    WHEN line_item_product_code = 'AmazonEC2' THEN  
    line_item_unblended_cost * 0.89 
    ELSE line_item_unblended_cost * 0.85 END) AS discounted_cost,   
     CAST(line_item_usage_start_date AS DATE) AS start_day, CAST(line_item_usage_end_date AS DATE) AS end_day   
FROM cost_management_2ef5a060_prod  
WHERE line_item_usage_account_id IN ('123456789122')    
        AND line_item_usage_start_date  
    BETWEEN DATE '2019-06-01'   
        AND DATE '2020-01-01'   
GROUP BY  line_item_usage_account_id, CAST(line_item_usage_start_date AS DATE), CAST(line_item_usage_end_date AS DATE),line_item_product_code   
HAVING sum(line_item_blended_cost) > 0  
ORDER BY  line_item_usage_account_id    

Результаты данных:

Текущие данные Результаты по День

Результаты данных по месяцам

Могут ли мои данные выглядеть примерно так или иначе, когда у меня не так много строк?

Спасибо!

1 Ответ

0 голосов
/ 17 января 2020

Приведенный ниже запрос должен помочь вам, прежде чем вы продолжите, запрос записывается в ваш текущий вывод запроса, а start_day и end_day являются фактической датой, для которой имеется запись. Также start_day берется для рассмотрения месяца, если end_day для этой записи лежит в следующем месяце, то мы вообще не можем вычислять.

    select line_item_usage_account_id, date_format(date_parse(start_day ,'%c/%e/%Y' ), '%Y/%c') as Mo_Year,
    sum(discounted_cost) as discounted_cost 
    ,min(date_parse(start_day ,'%c/%e/%Y' )) as start_day,
    Max(date_parse(end_day ,'%c/%e/%Y' )) as end_day
    from <table_name>  
    group by date_format(date_parse(start_day ,'%c/%e/%Y' ), '%Y/%c'), line_item_usage_account_id
...