我正在处理一个包含以下列的数据集:
unique_ID Date
a 2018_09_08
a 2018_09_18
a 2018_09_28
d 2018_09_08
我希望选择在所有三个日期(即2018年9月8日、2018年9月18日和2018年9月28日)出现的唯一的\u id。
我的输出应该只是“a”。
这个问题有一个长期的解决方案-提取每个日期的唯一ID,并在所有三个表上创建外部表,然后在三个表上使用join来获取所有三个日期的唯一ID。我认为应该有一个更好的解决方案,因为我们只有3个日期在这种情况下,可能会上升以后,所以我正在寻找一个更普遍的解决方案。
这是我写的问题- select distinct(unique_ID) from table_name where Date = '2018_09_08' and Date = '2018_09_18' and Date = '2018_09_28'
返回null。
我还试图编写一个子查询,但我怀疑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 ')'
在这种情况下,我们如何获得唯一的\u id?
1条答案
按热度按时间mo49yndu1#
这可以通过
group by
以及having
.