Hive запрос, чтобы получить минимальную и максимальную дату группы столбцов по году и идентификатору

0

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

id  date_col

123 2015-05-01 04:00:00

123 2017-04-01 04:00:00

123 2017-09-01 04:00:00

123 2014-09-01 04:00:00

123 2012-12-01 05:00:00

123 2016-08-01 04:00:00

123 2014-05-01 04:00:00

123 2016-10-01 04:00:00

Результаты, которые я ожидаю

123 2014-05-01   2014-09-01

123 2015-05-01

123 2016-08-01   2016-10-01

123 2017-04-01   2017-09-01

Я попытался использовать ниже нескольких запросов, но я не буду сортировать в соответствии с годом

SELECT id,MAX(date_col) AS maxdate_col,MIN(date_col) AS mindate_col FROM table GROUP BY id 

SELECT id,MAX(date_col) AS max_votes,MIN(date_col) AS mindate_col,YEAR(date_col) FROM test GROUP BY id,YEAR(date_col) 
  • 0
    каков результат вашего второго запроса?
Теги:
hive
hiveql

1 ответ

1
Лучший ответ

Попробуй это

SELECT id
        ,MIN(date_col) AS mindate_col
        ,(CASE WHEN MAX(date_col) <> MIN(date_col) THEN MAX(date_col) END)  AS maxdate_col
        ,YEAR(date_col) AS year_col
FROM    test 
GROUP BY id,YEAR(date_col)
ORDER BY id,year_col

Если вы хотите только часть date, вы можете использовать ее CAST(date_col AS DATE)

  • 0
    Спасибо Абдул, что, кажется, работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню