2015-12-02 4 views
0

Я хочу, чтобы фильтровать данные по моему требованию в улье или оракулаFilteration Данные основаны на ежемесячной основе

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 месяца.

Я не могу удовлетворить это требование. Может ли кто-нибудь, кто может помочь мне?

+0

Данные приведены ниже в табличном формате трех столбцов. данные показаны как одна строка не уверены, почему? три полей есть для каждого строки человеко-месяц NUMBER_OF_VISITS -12 \ п -10 \ п -20 \ п -10 \ п б-12 \ п б-15 \ п б -12 \ п с 1 10 \ п с 3 18 \ п д-14 \ п д-18 \ п д-26 \ п д-34 \ п д-36 \ п –

+0

кто может помочь меня, пожалуйста, я застрял с этим от 2 дней. –

ответ

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 

Если вы укажете начальный месяц и конечный месяц, вы можете использовать вышеуказанные запросы для решения своей проблемы.

+0

Вышеуказанный запрос не соответствует моему требованию. Я хочу только ниже выхода. -12 -10 -20 d-14 d-18 d-26 Очевидно говоря я хочу записей, которые имеют регулярное посещение торгового центра. 1-й месяц, 2-й месяц, 3-й месяц - это регулярный визит. 1-й месяц, 3-й месяц, 4-й месяц - нерегулярный визит (Отфильтруйте эти записи). Надеюсь, я четко упомянул о прецеденте. –

+0

эти вопросы не являются окончательными или правильными. Для вашего ввода второй запрос дает правильный результат. Для правильного запроса нужны аналитические функции и больше усилий. То, что вы должны сделать, это понять их. –

+0

Я пытаюсь отстать от аналитических запросов, но это также не соответствует моему требованию. Я хочу получить ответ в HIve, но приведенные выше запросы похожи на sql. Хорошо, позвольте мне попробовать второй запрос в Oracle и сделать в соответствии с моим требованием. –

Смежные вопросы