XC笔试SQL

 

SELECT SUM(number)
  FROM
(
SELECT v_id,COUNT(DISTINCT s_id) AS number
FROM(
(SELECT p.v_id,p.s_id,p.ts
  FROM page_view p,dim_page d
 WHERE d.page_id = p.page_id
   AND page_name  = '广告页A') AS t1
LEFT JOIN
(SELECT p.v_id,p.s_id,p.ts
  FROM page_view p,dim_page d
 WHERE d.page_id = p.page_id
   AND page_name  = '产品页B') AS t2
    ON t1.v_id = t2.v_id AND t1.s_id = t2.s_id
LEFT JOIN
   (SELECT p.v_id,p.s_id,p.ts
  FROM page_view p,dim_page d
 WHERE d.page_id = p.page_id
   AND page_name  = '预定页C') AS t3
    ON t1.v_id = t3.v_id AND t1.v_id = t3.s_id      -- 要保证t1t2t3的vid和sid都一样
                                                    -- (s_id一样代表跳转,vid一样代表连接同一用户)
WHERE t1.ts < t2.ts
  AND t2.ts < t3.ts
GROUP BY t1.v_id,t1.s_id)AS total                    -- 这里group形成了总表合并满足条件的记录(比如a/M,a/N,b/T,b/s)
                                                     -- a,b代表v_id,MNTS代表s_id
GROUP BY v_id                                        -- groupv_id之后就能知道每个v_id有几个MNTS也就是满足条件的路径了
);

-- 这里我认为当v_id一样是,seesionid一样的组成一条路径!!!!

猜你喜欢

转载自blog.csdn.net/kylin_learn/article/details/89245529
xc