Подзапрос в Hive Where Clause

Мне нужна помощь с этим произведением:

Как я могу написать в УИЕ следующее ...

SELECT * 
FROM tableA 
WHERE colA = (SELECT MAX(date_column) FROM tableA)

Мне нужно запросить только последние текущие записи из таблицы. Я храню даты в виде строк в улье как «гггг-мм-дд».


person Raunak Jhawar    schedule 26.01.2014    source источник
comment
ВЫБРАТЬ dateCol FROM tableA JOIN (SELECT TO_DATE (dateCol) AS dDate FROM tableA ORDER BY TO_DATE (dateCol) DESC LIMIT 1) test ON test.ddate = tableA.dateCol   -  person Raunak Jhawar    schedule 26.01.2014


Ответы (3)


Избегайте JOIN, используйте функции аналитики и работы с окнами:

select * from (select *, rank () over (order by date_col desc) как ранг из таблицыA) S, где S.rank = 1;

person libjack    schedule 27.01.2014
comment
Я пробовал SHOW FUNCTIONS и RANK () не указан как функция, которую я могу вызвать? - person Raunak Jhawar; 29.01.2014
comment
Окно и аналитика, представленные в версии 0.11 - person libjack; 30.01.2014
comment
Я использую CDH 4.5, есть ли способ обновить HIVE? - person Raunak Jhawar; 31.01.2014

Что-то вроде этого может сработать:

SELECT a.* 
FROM tableA a
JOIN (SELECT MAX(date_column) AS max_date_column
      FROM tableA) b
ON a.colA = b.max_date_column

Надеюсь, поможет

РЕДАКТИРОВАТЬ: Я понятия не имею, как я добрался до этого старого вопроса, вы, вероятно, уже давно его решили :)

person Ary Jazz    schedule 12.09.2018

Обратите внимание, что в Hive 0.13+ вы можете использовать подзапросы в операторах WHERE.

person Kim Moritz    schedule 01.12.2017