0

目的: 顧客の元の紹介 URL を特定します。

私には何千もの顧客がいて、それぞれが複数のセッションを持っています。顧客ごとに最初のセッション ID を見つけ、そのセッション ID から、そのセッション内で最初に表示されたページの紹介 URL を見つけたいと考えています。

1 つの顧客 ID でこれを行うことができましたが、すべての顧客についてこの情報をプログラムで取得する方法がわかりません。

以下は、単一の顧客 ID の正しいデータを返す SQL クエリです。Customer_ID2 つの列 (" " と " ")を持つテーブルを作成するにはどうすればよいOriginal Referral URLですか?

SELECT 
    asciistr(HITS.REFERRER_URL), 
    HITS.REF_MARKER, 
    ACTS.REGISTRATION_DATE,  
    HITS.SESSION_ID, 
    hits.HIT_DATETIME    
FROM DB.CLICKSTRM_WMA_HITS hits
     INNER JOIN DB.D_Customers cus ON hits.customer_id = cus.customer_id
     INNER JOIN DB.ACCOUNTS ACTS ON CUS.ACCOUNT_ID = ACTS.ACCOUNT_ID     
WHERE HITS.IS_FIRST_VIEWED_PAGE = 1    
  AND CUS.ACCOUNT_ID = '999999999'  
GROUP BY HITS.HIT_DATETIME, ACTS.REGISTRATION_DATE, HITS.REF_MARKER, asciistr(hits.REFERRER_URL), HITS.SESSION_ID
ORDER BY HITS.HIT_DATETIME ASC
)WHERE ROWNUM < 2
4

1 に答える 1

0

ランキング/分析関数を使用してこれを行うことができます。

select *
from (SELECT asciistr(HITS.REFERRER_URL),HITS.REF_MARKER,      
             ACTS.REGISTRATION_DATE,HITS.SESSION_ID, hits.HIT_DATETIME,
             row_number() over (partition by cus.Account_Id
                                order by hits.sessionid, hits.IS_FIRST_VIEWED_PAGE desc
                               ) as seqnum
      from DB.CLICKSTRM_WMA_HITS hits INNER JOIN
           DB.D_Customers cus
           ON hits.customer_id = cus.customer_id INNER JOIN
           DB.ACCOUNTS ACTS
           ON CUS.ACCOUNT_ID = ACTS.ACCOUNT_ID
     ) t
where seqnum = 1

私があなたの論理に正しく従えば、これは正しいと思います。各顧客の最低セッション、次に IS_FIRST_VIEW_PAGE が 1 のセッション。他のページではこれが 0 であると仮定します。

于 2012-08-15T19:22:24.833 に答える