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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一些常见的 SQL Server 函数面试题及其答案: 1. 什么是 SQL Server 函数? 答:SQL Server 函数是一种可重复使用的代码块,接受输入参数并返回一个值。它们用于执行特定的操作,并可以在 SQL 查询中使用。 2. SQL Server 函数有哪些类型? 答:SQL Server 函数分为以下几种类型: - 标量函数(Scalar Functions):接受输入参数并返回一个标量值。 - 表值函数(Table-Valued Functions):返回一个表作为结果集。 - 聚合函数(Aggregate Functions):对数据集执行计算,并返回一个标量值。 3. 如何创建标量函数? 答:要创建标量函数,可以使用 `CREATE FUNCTION` 语句,指定函数名称、参数、返回值数据类型和函数体逻辑。例如: ``` CREATE FUNCTION dbo.MyScalarFunction ( @param1 INT ) RETURNS INT AS BEGIN DECLARE @result INT; -- 函数体逻辑 SET @result = @param1 * 2; RETURN @result; END ``` 4. 如何调用标量函数? 答:可以使用 `SELECT` 语句调用标量函数,并传递参数。例如: ``` SELECT dbo.MyScalarFunction(5) AS Result; ``` 5. 如何创建表值函数? 答:要创建表值函数,可以使用 `CREATE FUNCTION` 语句,指定函数名称、参数、返回表的结构和函数体逻辑。例如: ``` CREATE FUNCTION dbo.MyTableValuedFunction ( @param1 INT ) RETURNS TABLE AS RETURN ( SELECT Column1, Column2 FROM MyTable WHERE Column3 = @param1 ) ``` 6. 如何调用表值函数? 答:表值函数可以像表一样在查询中使用。例如: ``` SELECT * FROM dbo.MyTableValuedFunction(5); ``` 这些问题和答案可以帮助您在 SQL Server 函数的面试中更好地理解和回答相关问题。请注意,在面试中还可能涉及更深入的问题,因此建议对 SQL Server 函数的不同类型和用法进行更深入的学习和准备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XiaoLiuXiaoLiu7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值