2013-06-18 5 views
0

У меня есть данные о звонках для клиентов. Я хочу получить этих клиентов между двумя датами, которые имеют активность против каждой даты. Каждый день они выполняли по меньшей мере одно мероприятие. Я попробовал следующий запрос.Как получить общие идентификаторы в каждой группе из группы по предложению SQL?

Ниже приводится запрос:

select date_id , count (distinct customer_id) from usage_analysis 
where usage_direction_type_id = 1 
and date_id => 20130608 and date_id <= 20130612 
group by date_id 

Это возвращает:

DATE_ID   COUNT 
---------------------------- 
20130608  23451 
20130609  9878 
20130610  56122 
20130611  7811 
20130612  12334 

Но я хочу, чтобы те клиенты, которые являются общими в каждой группе. Может случиться, что человек, который звонил 8 июня, не существует на следующий день. Поэтому я хочу, чтобы эти клиенты существовали в каждой группе.

Любая идея, кто может это сделать в SQL?

ответ

3

Вы можете рассчитывать отдельные даты для каждого клиента. Только те, у кого есть пять отдельных дат, пройдут тест. Ниже приведен список клиентов:

select customer_id 
from usage_analysis 
where usage_direction_type_id = 1 and 
     date_id >= 20130608 and date_id <= 20130612 
group by customer_id 
having count(distinct date_id) = 5 
+0

Если пользователь совершает действие только на 20130612, но он будет 5 раз, то что произойдет с выходом вашего запроса ????? – Romesh

+0

@RomsJain. , , Запрос подсчитывает разные значения 'date_id', поэтому он будет считать только одну дату. Клиент не появится. –

+0

Он не извлекает никаких записей. Кажется странным. Означает ли это, что у меня нет никакого пользователя, который делал свою деятельность каждый день. –

0

@ Ответ Гордона Линоффа должен быть хорошо подходит для вашей ситуации. Когда вы пробовали через 2 дня, вы не изменили значение счета от 5 до 2?