Я работаю над набором данных, который имеет следующие столбцы:
unique_ID Date
a 2018_09_08
a 2018_09_18
a 2018_09_28
d 2018_09_08
Я хочу выбрать те уникальные идентификаторы, которые встречаются во все три даты, то есть 2018_09_08, 2018_09_18 и 2018_09_28.
Мой вывод должен быть просто 'a'.
Существует длинное решение этой проблемы - извлекать уникальные идентификаторы на дату и создавать внешнюю таблицу поверх всех трех, а затем использовать соединение трех таблиц, чтобы получитьуникальные идентификаторы для всех трех дат.Я считаю, что должно быть лучшее решение, поскольку у нас есть только 3 даты в этом случае, которые могут возрасти позже, поэтому я ищу более обобщенное решение.
Вот запрос, который я написал - select distinct(unique_ID) from table_name where Date = '2018_09_08' and Date = '2018_09_18' and Date = '2018_09_28'
, которыйвозвращает ноль.
Я также пытаюсь написать подзапрос, но я сомневаюсь, что HIVE поддерживает такие подзапросы в этом случае.Вот что я написал:
select count(distinct(unique_ID)) from (
(select distinct(unique_ID) from table_name where Date = '2018_09_08') a
union all
(select distinct(unique_ID) from table_name where Date = '2018_09_18') b
union all
(select distinct(unique_ID) from table_name where Date = '2018_09_28') c
);
, и я получаю следующую ошибку синтаксического анализа: FAILED: ParseException line 3:0 missing ) at 'union' near ')' line 4:87 missing EOF at 'b' near ')'
Как мы можем получить уникальные идентификаторы в этом случае?