写在前面:约的晚上八点半面试,直接是业务面,预估至少四个人面这个岗位,总共四个问题
1、经典GMV异动分析—指标拆解分析
2、业务方询问AB测结果分析——我说了要进行业务上以及统计上的分析,面试官补充说考虑对实验组进一步细化,找出唯一的影响变量
3、数据倾斜了解吗?—一脸懵逼,直接说不会,面试结束后自己去了解一下
4、sql题:唯品会APP页面有可能同时出现id不相同,但实际上是同一商品的情况,对用户造成冗余的感觉,查找出出现这种情况的uid,search,good_id,当时没做出来,自己面试结束后总结了两种方法
用户行为表User表,有三列,uid,search,good_id,其中search代表用户第几次看APP
商品映射表good表,有两列id_1,id_2,同一行代表是id不同但实际上同一种商品,这两列都可以与User表的good_id进行匹配
方法一:步骤1: User表分别与good表第一列和第二列左连接后删除没有匹配上的数据,然后用ifnull函数替换数据,让同一商品都显示good表上的id_1:
With table_A as (select uid,search,good_id,ifnull(C.id_1,B.id_1) id_all
From User left join good B
On User.good_id = B.id_1
Left join good C
On User.good_id = C.id_2
Where B.id_1 is not null
or C.id_2 is not null);
步骤2:在对上一步骤产生的table_A进行计数,大于2即为答案
Select uid,search, id_all,count(uid,search, id_all)
From table_A Group by uid,search, id_all Having count(uid,search, id_all) >= 2
方法二:用row_number()给表二打上唯一的标签,然后用两个id分别匹配表二,用count()计数,筛选出大于等于2的uid
请各位牛友批评指正!