子查询
AIPL漏斗分析
Ⅰ:
①作为取值范围
像这样,用一对圆括号 () 包裹,作为一个元素参与到外层查询中的查询,被称为 子查询。
ps:此时的子查询,是外层查询中 WHERE 子句的一部分,所以从语法角度而言,它并不是一条完整的子句,末尾是不可以加分号的。再从语句功能看,它是 item_id 列的取值范围,因此在子查询的 SELECT 子句中,必须同样检索出 item_id 列,此时取值范围才是成立的。
重点:子查询可以作为外层查询的 筛条件 中的 取值范围,写在 WHERE 子句里。
②作为计算字段
完全限定列名:例如 brands.brand_id = items.brand_id。这里的 brands.brand_id 和 items.brand_id 和我们以前使用的列名不同,它们都带数据表信息。英文句点 . 前面的内容,表示来源于哪一张数据表,后面是具体的列名。
PS:SQL会把 () 视作一个“虚拟的算式”
若去掉外层查询的别名,则第一个字段的字段名将会是整条子查询的内容。
AIPL 理论模型:
Awareness:认知人群,对商品停留在认知层面;
Interest:兴趣人群,在认知基础上,对商品产生兴趣;
Purchase:购买人群,顾名思义,购买了商品的人群;
Loyalty:忠诚人群,即平台的忠实用户,可以理解为“回头客”。
A(认知人群):浏览商品信息页;
I(兴趣人群):收藏商品、将商品加入购物车;
P(购买人群):购买商品;
L(忠诚人群):再次购买商品。
其行为类型(type)共有四类:
pv(page view):浏览商品信息页;
fav(favorite):收藏商品;
cart:将商品加入购物车;
buy:购买商品。
A 值的计算
A(认知人群)这一环节包含一种行为:浏览商品信息页。因此我们计算 A 的值,实际上就是统计类型为 'pv' 的行为次数。
SELECT count(iif(type = ’pv‘,1,NULL) AS A
I 值的计算
I(兴趣人群)值的计算方法也是类似的。由于这个环节包含两种行为:收藏和加入购物车,所以我们只用修改 iif() 函数的条件,也就是第一个参数,就能得到最终的结果
SELECT count(iif(type=IN('fav','cart'),1,NULL)) AS I
P 值的计算
如法炮制,我们统计出类型为 'buy' 的数据个数,就能得到 P(购买人群)的值 (和A 一样算法)
L 值的计算
由于 L 环节统计的是用户复购行为,而原始的数据表中只记录了 购买(buy) 这一项,并没有对是否为复购进行标记。所以计算 L 的值需要分为两步,先统计出每位用户在这段时间内的购买次数,找出购物次数超过 1 的用户,在此基础上再统计复购用户数量
(SELECT count(*) AS 购物次数
FROM user_behavior
WHERE type = ‘buy’
GROUP BY user_id
HAVING 购物次数 >1
) AS L
③作为数据来源
子查询的功能,与它出现的位置是息息相关的。当一个子查询出现在外层查询的 FROM 子句里时,这个子查询就被视为了外层查询的 数据来源。外层查询会在子查询的结果上进行进一步的查询。
④子查询的嵌套
标签:AIPL,商品,--,子句,外层,查询,人群,SQL,id From: https://www.cnblogs.com/catch-autumn/p/16826653.html