目标:确定客户的原始引荐网址。
我有一组客户,每个人都有多个会话。对于每个客户,我想找到第一个sessionid,然后从该sessionid,我想在该会话中的第一个查看页面上找到推荐URL。
我已经能够使用单个客户ID执行此操作,但不知道如何以编程方式为所有客户获取此信息。
以下是返回单个客户ID的正确数据的SQL查询。如何构建包含两列(“Customer_ID
”和“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
答案 0 :(得分: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。