数据过滤基于每月定期

时间:2015-12-02 15:16:06

标签: 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个月的人,我只需要 a d 因为我可以看到1,2,3,4个月的数据。

我无法满足此要求。 任何善于查询的人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

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

select person 
from table
group by person
having count(distinct month) >=4

计算连续访问次数更难。让我们找到至少连续4次访问但只能连续访问的人(这比你的问题更容易)。

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

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