SQL 的一点简单的面试题求助

@SQL 面试题目,麻烦大家帮我看看

SQL 的一点简单的面试

–表结构介绍

用户活跃模型表:tmp_liujg_dau_based,

以imp_date、qimei为主键,
一个用户1天只出现1次,出现即表示当日登陆
字段:
(1)imp_date,日期,string格式,格式例如20190601
(2)qimei,用户唯一标识,string格式,无空值
(3)is_new,新用户标识,string格式,1表示新用户,0表示老用户

红包活动参与领取模型表:tmp_liujg_packet_based,

日志流水表,每一行为领取1次红包,
无特殊说明,一般不考虑领取红包但当日未登陆的情况
字段:
(1)imp_date,日期,string格式,格式例如20190601
(2)report_time, 领取时间戳,string格式
(3)qimei,用户唯一标识,string格式,无空值
(4)add_money,领取金额,string格式,表示领取金额,单位为分,无空值或0值

–Hive SQL基础题
注意:不要纠结细节,字段名、表名、函数名等不用太纠结,我能看懂就可以,重点是SQL的逻辑正确,有题意不清楚及时微信联系我,能够作答几道题作答几道题,不会可以跳过

–(1)计算2019年6月1日至今,每日DAU(活跃用户量,即有登陆的用户量)
输出数据格式:imp_date(日期)
输出数据指标:dau

–(2)计算2019年6月1日至今,每日领取红包的新用户数、老用户数(近1个月),及其人均领取金额,人均领取次数,要考虑领取红包但当日未登录的情况
输出数据维度:imp_date(日期),is_new(新用户1,老用户0,未知2)
输出数据指标:mean_money(人均领取金额),mean_get_count(人均领取次数)

–(3)计算2019年3月,每个月按领红包取天数为1、2、……、30、31天区分,计算取每个月领取红包的用户数,人均领取金额、人均领取次数
输出数据维度:month(月份),get_money_days(领取天数)
输出数据指标:user_count(用户数),mean_money(人均领取金额),mean_get_count(人均领取次数)

–(4)计算2019年3月,每个月领取过红包用户和未领取过红包用户的数量、平均月活跃天(即本月平均活跃多少天)
输出数据维度:month(月份),is_packet_user(红包用户1,非红包用户0)
输出数据指标:user_count(用户数量),mean_days_in_month(月活跃天)

–(5)计算2019年3月至今,每个月活跃用户的注册日期,2019年3月1日前注册的用户注册日期填空即可
输出数据维度:month(月份),qimei(用户唯一标识)
输出数据指标register_date(注册日期)

–(6)计算2019年6月1日至今,每日的用户次日留存率、领取红包用户的次日留存率、未领取红包用户的次日留存率
输出数据维度:imp_date(日 期)
输出数据指标:dau(当日用户数),retain_rate(次日留存率),packet_user_rate(当日领取红包用户占比),packet_user_retain_rate(当日

–难度较大的题
注意:以下问题稍有些难度,注意审题,有题意不清楚及时邮件联系我,留下您的电话,我将电话联系您解释题意

–(7)计算2019年6月1日至今,每日新用户领取的第一个红包的金额
输出数据维度:imp_date(日期),qimei(用户唯一标识)
输出数据指标:money(第一个红包的金额)

–(8)计算2019年6月1日至今,每个新用户领取的第一个红包和第二个红包的时间差(只计算注册当日有领取红包的用户,注册当日以DAU表中新用户为1的用户)
输出数据维度:imp_date(注册日期),qimei(用户唯一表示)
输出数据指标:first_action_time(首次领红包时间),second_action_time(第二次领红包时间),delta_times(时间差)

–(9)计算2019年6月1日至今,每日领取红包用户领取金额的中位数(用户粒度的中位数,而非红包粒度的中位数)
输出数据维度:imp_date(注册日期)
输出数据指标:mid_money(用户当日领取红包金额的中位)

–(10)计算2019年6月1日至今,每日DAU中,近3天连续登陆用户的占比,近3天有领取红包用户的占比
输出数据维度:imp_date(日期)
输出数据指标:dau(当日登陆用户数),continue_3days_user_count(近3天都有登陆的用户数),continue_3days_user_rate(近3天都有登陆的用户数占DAU的比例)

–(11)计算2019年6月1日至今,每日领取红包达到30天的累计用户数(红包活动,从3月1日开始,可间断领取,无需连续),即6月1日计算从3月1日至6月1日领取红包天数达到30天的用户数,6月2日计算从3月1日至6月2日领取红包天数达到30天的用户数,并计算此部分用户当日活跃用户数、当日领取红包用户数,当天领取的总金额、平均金额
输出数据维度:imp_date(日期)
输出数据指标:user_count(3月1日至今领取天数达到30天的累计用户数),user_count_dau(此部分用户且当日活跃),user_count_get_packet(此部分用户且当日领取红包的用户数),money(总领取金额),mean_money(人均领取金额)

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值