Выбор максимальной даты каждого месяца - PullRequest
1 голос
/ 10 февраля 2020

У меня есть таблица с большим количеством накопительных столбцов, эти столбцы сбрасываются в 0 в конце каждого месяца. Если я sum эти данные, я закончу двойной счет. Вместо этого, с помощью Hive я пытаюсь выбрать максимальную дату каждого месяца.

Я пробовал это:

SELECT
    yyyy_mm_dd,
    id,
    name,
    cumulative_metric1,
    cumulative_metric2
FROM
    mytable

WHERE
    yyyy_mm_dd = last_day(yyyy_mm_dd)

mytable имеет ежедневные данные с начала год. В выводе выше, я вижу только последнюю дату января, но не февраль. Как выбрать последний день каждого месяца?

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Февраль еще не закончился. Возможно, оконная функция делает то, что вы хотите:

SELECT yyyy_mm_dd, id, name, cumulative_metric1, cumulative_metric2
FROM (SELECT t.*,
             MAX(yyyy_mm_dd) OVER (PARTITION BY last_day(yyyy_mm_dd)) as last_yyyy_mm_dd
      FROM mytable t
     ) t
WHERE yyyy_mm_dd = last_yyyy_mm_dd;

Это вычисляет последний день в данных .

0 голосов
/ 10 февраля 2020

использовать коррелированный подзапрос и функцию даты к месяцу в улье

SELECT
    yyyy_mm_dd,
    id,
    name,
    cumulative_metric1,
    cumulative_metric2
FROM
    mytable t1

WHERE
    yyyy_mm_dd = select max(yyyy_mm_dd) from mytable t2 where
     month(t1.yyyy_mm_dd)= month(t2.yyyy_mm_dd)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...