sql题目0201

题目一:计算好评率

需要统计2019年3月1日至2019年3月31日,用户“小张”提交的“母婴”类目下"DW"品牌的好评率(好评率=‘好评’评价量/总评价量)


id(评价id,主键)
create_time(创建时间,格式‘2021-01-01’)
user_name(用户名字)
goods_id(产品id,外键)
sub_time('提交时间',格式‘2020-01-01 23:10:01’)
sat_name(评价类型,包括‘好评’,‘中评’,‘差评’)


goods_id(外键)
goods_name(商品类目)
brand_name(品牌名称)

select 
    count(1) as all_comments,
    sum(case when sat_name='好评' then 1 else 0 end) as good_comments,
    sum(case when sat_name='好评' then 1 else 0 end)/count(1) as good_rate
from
    userjudge a 
left join 
    goosinfo b
on a.goods_id=b.goods_id
where
    b.goods_name='母婴'
    and b.brand_name='DW'
    and  user_name='小张'
    and  substr(sub_time,1,10)>='2019-03-01'
    and  substr(sub_time,1,10)<='2019-03-31'

从执行结果来说:
count(1)和count()之间没有区别,因为count()和count(1)都不会去过滤空值,
但count(列名)就有区别了,因为count(列名)会去过滤空值。
从执行效率来说:
他们之间根据不同情况会有些许区别,MySQL会对count()做优化。
(1)如果列为主键,count(列名)效率优于count(1)
(2)如果列不为主键,count(1)效率优于count(列名)
(3)如果表中存在主键,count(主键列名)效率最优
(4)如果表中只有一列,则count(
)效率最优
(5)如果表有多列,且不存在主键,则count(1)效率优于count(*)

题目二:用户行为分析


orders
id;user_id;item_id,par_time,item_num;

favorites
id;user_id;item_id;fav_time

请用一句sql取出所有用户对商品的行为特征,特征分为已购买,购买未收藏,收藏未购买,收藏且购买;
思路:

--已购买,购买未收藏,收藏未购买,收藏且购买
select
    a.user_id,
    a.item_id,
    1 as 已购买,
    case when b.item_id is null then 1 else 0 end as 购买未收藏,
    0 as 收藏未购买,
    case when a.item_id=b.item_id then 1 else 0 end 收藏且购买
from 
    orders a 
left join 
    favorites b
on a.user_id=b.user_id
and a.item_id=b.item_id

union

select
    a.user_id,
    a.item_id,
    case when b.item_id is not null then 1 else 0 end as 已购买,
    0 as  购买未收藏,
    case when b.item_id is null then 1 else 0 end as 收藏未购买 ,
    case when a.item_id=b.item_id then 1 else 0 end as 收藏且购买
from favorites a 
left join 
    orders b 
on a.user_id=b.user_id
and a.item_id=b.item_id
order by user_id,item_id;

个人想法:
用户类型基准有两类:购买&收藏;
购买-收藏/未收藏;
收藏-购买/未购买;
但是其中购买-收藏以及收藏-购买不等同吗???

题目二:使用ABtest对新算法进行评估


目前开发出商品页面上“相关商品”模块的一个新的推荐算法,并且打算通过AB test(50%用户保留原先的算法逻辑为控制组,50%用户使用新的算法逻辑为实验组)来对新的算法效果进行评估。假设你此次实验的数据分析师,请问你辉如何评估控制组 和实验组的表现?
(假设需要数据都可取到),请按重要性列出最重要的三个指标并给出你的分析过程/思考。


指标:销售额、点击量、转化率


1、设原假设为使用新的推荐算法后上述指标降低或不变。备择假设为使用新的推荐算法后上述指标增加;
2、选择显著性水平临界值为5%,选择两周时间采集数据。
3、使用T检验,计算P值。
4、分析结论,如果P值小于5%,那么原假设不成立,备择假设成立,即 使用新算法后指标提升。
反之无法推翻原假设,不能证明使用新算法后指标提升。

题目四:销量下降了怎么办

目前发现,某店铺的x品类在1月销量比去年1月销量下降了50%,如果你是负责此次分析的数据分析师,你会如何分析?请写出你的分析思路/过程/想法。

思路:
1、先定位问题:
外部市场环境,内部问题:渠道、新老用户、地区、时间段、某个商品;

2、进行指标拆解
销售额=访客数下单率客单价-退货金额
访客数=新客户+老客户,新客户=渠道的流量转化率
下单率=页面访问量
转化率
订单取消率=订单取消数/订单总数

3、针对指标的变化提建议
促销活动、商品优化、渠道优化

你可能感兴趣的:(sql题目0201)