sql题目0201

作者: 喝奶茶不加奶茶 | 来源:发表于2021-02-02 10:34 被阅读0次

    题目一:计算好评率

    需要统计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

        本文链接:https://www.haomeiwen.com/subject/elljtltx.html