Oracle 基于每月定期的数据过滤

Oracle 基于每月定期的数据过滤,oracle,hadoop,filter,hive,Oracle,Hadoop,Filter,Hive,我想根据我在Hive或oracle中的要求筛选数据 person month number_of_visits a 1 12 a 2 10 a 3 20 a 4 10 b 1 12 b 3 15 b 4 12 c 1 10 c 3 18 d 1 14 d 2 18 d 3 26 d 4 34 d 5 36 我的输出要求是: 我想过滤每月定期访问购物中心的人。 如果我考虑4个月的人,我只需要 < >强> d 因为我可以看到他们1,2,3,4个月的数据 我不能满足这个要求。 任何擅长查询的人都能

我想根据我在Hive或oracle中的要求筛选数据

person month number_of_visits
a 1 12
a 2 10
a 3 20
a 4 10
b 1 12
b 3 15
b 4 12
c 1 10
c 3 18
d 1 14
d 2 18
d 3 26
d 4 34
d 5 36
我的输出要求是: 我想过滤每月定期访问购物中心的人。 如果我考虑4个月的人,我只需要<强> < <强> >强> d<强> 因为我可以看到他们1,2,3,4个月的数据

我不能满足这个要求。
任何擅长查询的人都能帮我吗?

要选择访问时间超过4个月的人:

select person 
from table
group by person
having count(distinct month) >=4
要计算连续的访问次数就更难了。让我们找出至少连续4次就诊但仅连续就诊的人(这比您的问题更容易)


如果指定开始月份和结束月份,则可以使用上述查询来解决问题。

数据如下所示,格式为三列表格。数据显示为单行不确定原因?每行有三个字段人月访问次数a 112\n a 2 10\n a 3 20\n a 4 10\n b 1 12\n b 3 15\n b 4 12\n c 1 10\n c 3 18\n d 1 14\n d 2 18\n d 3 26\n d 4 34\n d 5 36\n请任何人帮助我,我从2天起就一直坚持这个问题。上述查询不符合我的要求。我只想要低于输出。A121A210A320D14D218D326清楚地说我想要经常去购物中心的记录。第1个月、第2个月、第3个月为定期访问。第1个月、第3个月、第4个月为不定期就诊(过滤这些记录)。我希望我现在清楚地提到了用例。这些查询既不是最终结果,也不是正确的。对于您的输入,第二个查询提供正确的输出。对于正确的查询,需要分析函数和更多的工作。你们应该做的是理解它们。我试图滞后于分析查询的功能,但它也不符合我的要求。我想在HIve中找到答案,但上面的查询看起来像sql。好的,让我在Oracle中尝试上面的第二个查询,并根据我的要求进行修改。
select person 
from table
group by person
having count(distinct month) >=4
and min(month) = 1  
and max(month) - min(month) = count(distinct month) - 1