2014-01-08 2 views
1

Postgres에게 한 행당 하나의 이벤트가 두 번 나타나는 빈도를 물어보고 싶습니다.순차 Postgresql 행의 데이터 패턴 찾기

  • 사용자 1 : 클릭 된 버튼 1, 2 페이지
  • 사용자 1로 리디렉션 : 클릭 된 버튼 (18) : 클릭 된 버튼 2, 3 페이지
  • 사용자 1로 리디렉션 예를 들어, 나는 사용자 이벤트가 같이있는 경우 ,
  • 100 페이지로 리디렉션 사용자 1 : 클릭 된 버튼 1, 2 페이지
  • 사용자 1로 리디렉션 : 클릭 된 버튼 2는, 내가 두드려 볼 것 3

다음 페이지로 이동 제비 갈매기 ((버튼 1, 페이지 2) => (버튼 2, 페이지 3))는 두 번 발생으로 계산됩니다.

가능한가요? 그렇다면 어떻게해야합니까?

답변

0

아주 좋은 질문이며 상당히 간단한 해결책이 있습니다. 어느 사용자가 어떤 종류의 반복 된 동작을 표시하는지 확인하려면 GROUP BYHAVING을 사용하십시오.

DDL을 내가 원하는 결과를 얻기 위해 사용한 쿼리에 대해 설명 바이올린 예를 here를 참조하십시오.

CREATE TABLE t_clickevent (
    clickevent_id  INTEGER, 
    user_id    INTEGER, 
    clicked_button_id INTEGER, 
    redirected_url_id INTEGER); 

과 같이 더 이상 열을 추가하고 당신이 필요로 할 때 : 당신의 설명에서

나는 다음과 같이 사용자 이벤트를 저장하는 테이블을 생성하는 것이 좋습니다. 이것은 단지 최소한의 구조 일뿐입니다. 다음과 같이

쿼리를 사용

SELECT user_id, clicked_button_id, 
     redirected_url_id 
    FROM t_clickevent 
GROUP BY user_id, clicked_button_id, 
     redirected_url_id 
HAVING count(*) > 1; 

출력 :

USER_ID  CLICKED_BUTTON_ID  REDIRECTED_URL_ID 
----------- --------------------- ----------------- 
1   1      2 
1   2      3 

건배!