2013-06-18 2 views
0

고객 용 전화 데이터가 있습니다. 나는 각 날짜에 대하여 활동이있는 2 개의 날짜 사이 그 고객을 얻고 싶다. 그들은 매일 적어도 하나의 활동을했습니다. 나는 다음의 쿼리를 시도했다.SQL 절로 그룹에서 각 그룹의 공통 ID를 얻는 방법은 무엇입니까?

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 

을하지만 각 그룹에서 흔히있는 고객을 얻을합니다. 6 월 8 일에 전화 한 사람이 다음날 존재하지 않을 수도 있습니다. 그래서 저는 모든 그룹에 존재하는 고객 만 원합니다.

SQL에서 누가 할 수 있습니까?

답변

3

각 고객의 고유 날짜를 계산할 수 있습니다. 5 개의 다른 날짜가있는 고객 만 테스트에 합격합니다. 다음은 고객 목록을 제공합니다.

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

@Gordon Linoff 대답은 상황에 맞게 올바르게 작동해야합니다. 2 일 후에도 카운트 값을 5에서 2로 변경 했습니까?