2014-09-24 4 views
0

Я делаю некоторый анализ своих сырых данных веб-аналитики и пытается найти общие пути прибытия на своем веб-сайте, что приводит к покупке. Я мигрировали все мои данные, чтобы один аккуратный стол/скрипт ниже:Анализ веб-данных Pathing Analysis

  1. [ORDER_ID]: Non уникальный VARCHAR (A1000, A1001 и т.д.)
  2. [VISIT_IN_PATH]: Числовой (1.2.3.4 , 5 и т.д.)
  3. [VISIT_REMAINING]: Числовой (1,2,3,4,5 и т.д.)
  4. [CHANNEL]: VARCHAR (DIRECT/EMAIL/DISPLAY/ПЛАТНЫЕ ПОИСК/FREE ПОИСК)

То, что я надеюсь получить, - это подсчет путей, например, используя только ORDER_ID ABC123. Я мог бы получить следующее

COUNT/VISIT_IN_PATH_1/VISIT_IN_PATH_2/VISIT_IN_PATH_3/VISIT_IN_PATH_4/VISIT_IN_PATH_5 1/FREE ПОИСК/FREE SEARCH/DIRECT/FREE SEARCH/DIRECT

Я довольно новыми для 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 

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

  • Нет связанных вопросов^_^