2014-09-24 4 views
0

원시 웹 분석 데이터에 대한 분석을 일부 수행하고 내 웹 사이트에서 일반적인 도착 경로를 찾아 구매를 유도하고 있습니다. 나는 아래 하나의 깔끔한 테이블/스크립트에 내 모든 데이터를 마이그레이션 한 :Pathing Analysis 웹 데이터

  1. [ORDER_ID] : 비 고유 VARCHAR (A1000, A1001 등)
  2. [VISIT_IN_PATH] : (숫자 1,2,3,4 5 등)
  3. [VISIT_REMAINING] VARCHAR (DIRECT/EMAIL/DISPLAY/PAID SEARCH/FREE SEARCH)
: 1,2,3,4,5 등)
  • [CHANNEL (숫자

    내가 얻고 자하는 것은 길의 수이므로 예를 들면 ORDER_ID ABC123을 사용하면 다음과 같이 나타날 수 있습니다. : DIRECT

    COUNT/VISIT_IN_PATH_1/VISIT_IN_PATH_2/VISIT_IN_PATH_3/VISIT_IN_PATH_4/VISIT_IN_PATH_5 1/무료 검색/무료 검색/직접/무료 검색/

    내가 SQL에 아주 새로운 오전 내 첫번째 생각은 어떤 종류의 것 피벗하지만, 모든면에서이 방법에 접근합니다. 각 가능성을 정의해야하는 벽에 계속 올라갑니다.

    분명히 쉬운 방법이 있습니까?

    CREATE TABLE [dbo].[DummyPaths](
                [ORDER_ID] [varchar](64) NULL, 
                [VISIT_IN_PATH] [bigint] NULL, 
                [VISIT_REMAINING] [bigint] NULL, 
                [MARKETING_CHANNEL] [varchar](256) NULL 
               ) 
    GO 
    
    INSERT INTO DummyPaths (ORDER_ID,VISIT_IN_PATH,VISIT_REMAINING,MARKETING_CHANNEL) 
    VALUES  ('ABC123','1','5','FREE SEARCH'), 
          ('ABC123','2','4','FREE SEARCH'), 
          ('ABC123','3','3','DIRECT'), 
          ('ABC123','4','2','FREE SEARCH'), 
          ('ABC123','5','1','DIRECT'), 
          ('ABC124','1','5','OTHER REFERRAL'), 
          ('ABC124','2','4','OTHER REFERRAL'), 
          ('ABC124','3','3','OTHER REFERRAL'), 
          ('ABC124','4','2','OTHER REFERRAL'), 
          ('ABC124','5','1','OTHER REFERRAL'), 
          ('ABC125','1','5','DIRECT'), 
          ('ABC125','2','4','AFFILIATE'), 
          ('ABC125','3','3','AFFILIATE'), 
          ('ABC125','4','2','AFFILIATE'), 
          ('ABC125','5','1','AFFILIATE'), 
          ('ABC126','1','5','EMAIL'), 
          ('ABC126','2','4','EMAIL'), 
          ('ABC126','3','3','DIRECT'), 
          ('ABC126','4','2','DIRECT'), 
          ('ABC126','5','1','DIRECT'), 
          ('ABC127','1','5','FREE SEARCH'), 
          ('ABC127','2','4','DIRECT'), 
          ('ABC127','3','3','DIRECT'), 
          ('ABC127','4','2','FREE SEARCH'), 
          ('ABC127','5','1','DIRECT'), 
          ('ABC128','1','5','DIRECT'), 
          ('ABC128','2','4','EMAIL'), 
          ('ABC128','3','3','EMAIL'), 
          ('ABC128','4','2','EMAIL'), 
          ('ABC128','5','1','DIRECT'), 
          ('ABC129','1','5','FREE SEARCH'), 
          ('ABC129','2','4','FREE SEARCH'), 
          ('ABC129','3','3','FREE SEARCH'), 
          ('ABC129','4','2','FREE SEARCH'), 
          ('ABC129','5','1','DIRECT') 
    

    매우 도움이 될 것입니다.

    감사

  • 답변

    0

    나는이 함께 연주하고 발견 된 그 다음 작품 :

    with  dataset 
    as 
    (
    select ORDER_ID 
         ,[1] as 'VISIT1' 
         ,[2] as 'VISIT2' 
         ,[3] as 'VISIT3' 
         ,[4] as 'VISIT4' 
         ,[5] as 'VISIT5'     
    from 
    (
        select order_id, visit_in_path, MARKETING_CHANNEL 
        from dummypaths 
    ) x 
    pivot 
    (
        min(MARKETING_CHANNEL) 
        for visit_in_path in ([1], [2], [3], [4], [5]) 
    ) p 
    ) 
    
    
    select  x.VISIT1 
          ,x.VISIT2 
          ,x.VISIT3 
          ,x.VISIT4 
          ,x.VISIT5 
          ,MAX(dupes) as 'count' 
    from 
    (
    select  
          VISIT1 
          ,VISIT2 
          ,VISIT3 
          ,VISIT4 
          ,VISIT5 
          ,ROW_NUMBER() over 
              (partition by VISIT1 
                  ,VISIT2 
                  ,VISIT3 
                  ,VISIT4 
                  ,VISIT5 
              order by  VISIT1 asc 
              ) as 'dupes' 
    from dataset 
    ) x 
    group by x.VISIT1 
          ,x.VISIT2 
          ,x.VISIT3 
          ,x.VISIT4 
          ,x.VISIT5