滴滴数据分析岗试题分享

挖数网精选
挖数网精选
挖数网精选
446
文章
0
评论
2020-08-0113:08:00 评论 1,504 1978字
摘要

滴滴国际部2020年2月数据分析实习生笔试题,在2月就已经保存了相关资料,一直没有做,现在重新捡起来练手SQL,话不多说直入主题。

滴滴国际部2020年2月数据分析实习生笔试题,在2月就已经保存了相关资料,一直没有做,现在重新捡起来练手SQL,话不多说直入主题。

一.题目

滴滴数据分析岗试题分享

二.问题

  • 订单的应答率、完单率分别是多少?
  • 呼叫应答时间多长?
  • 从这一周的数据来看,呼叫量最高的是哪一个小时(当地时间)?呼叫量最少的是哪一个小时(当地时间)?
  • 呼叫订单第二天继续呼叫的比例有多少?
  • 如果要对表中乘客进行分类,你认为需要参考哪一些因素?

三.解题过程

导入mysql数据库及数据预处理

观察表中时间相关数据结合题目,要做出2步数据预处理:

  • 将时间相关列转换格式
  • 按巴西比中国慢11小时,将表中北京时间转换为巴西时间

滴滴数据分析岗试题分享

-- 利用cast函数转换成日期数据

update didi set

call_time = cast(call_time as datetime),

grab_time = cast(grab_time as datetime),

cancel_time = cast(cancel_time as datetime),

finish_time = cast(finish_time as datetime);

-- 将北京时间调整为巴西时间,date_sub函数

update didi set

call_time = date_sub(call_time,interval 11 hour ),

grab_time = date_sub(grab_time,interval 11 hour ),

cancel_time = date_sub(cancel_time,interval 11 hour ),

finish_time = date_sub(finish_time,interval 11 hour );

处理后数据

滴滴数据分析岗试题分享

问题1:订单的应答率、完单率分别是多少?

应答率 = 应答订单数 / 呼叫订单数

完单率 = 完成订单数 / 呼叫订单数

select sum(if(year(grab_time)<>1970,1,0))/count(call_time)as "应答率",

sum(if(year(finish_time)<>1970,1,0))/count(call_time)as "完单率"

from didi

滴滴数据分析岗试题分享

问题2:呼叫应答时间多长?

滴滴数据分析岗试题分享

-- 使用timestampdiff函数,计算应答时间与呼叫时间之间的时长

select sum(TIMESTAMPDIFF(MINUTE,call_time,grab_time))/count(grab_time)as "呼叫应答时间"

from didi

where year(grab_time)<>1970;

问题3:从这一周的数据来看,呼叫量最高的是哪一个小时(当地时间)?呼叫量最少的是哪一个小时(当地时间)?

根据题意,需要新增一列数据,订单呼叫时间的小时,进行分组分析

-- 新增一列

alter table didi add column call_time_hour VARCHAR(255);

-- 使用substr函数做字符串截取,为新列赋值

update didi set call_time_hour = SUBSTR(call_time from 12 for 2);

-- 方法2:使用date_format函数转换格式

update didi set call_time_hour = DATE_FORMAT(call_time,"%k")

滴滴数据分析岗试题分享

-- 找出呼叫量最高的小时,显示2行防止出现重复值。

select call_time_hour,count(call_time)as"呼叫量"

from didi

GROUP BY call_time_hour

ORDER BY count(call_time) desc

limit 2;

滴滴数据分析岗试题分享

-- 找出呼叫量最少的小时,显示3行确认是否有第三个相等值。

select call_time_hour,count(call_time)as"呼叫量"

from didi

GROUP BY call_time_hour

ORDER BY count(call_time) asc

limit 3;

滴滴数据分析岗试题分享

得出结论:呼叫量最高的是18时,呼叫量最少的是2和3时。

问题4:呼叫订单第二天继续呼叫的比例有多少?

select count(DISTINCT a.order_id)/(select count(DISTINCT order_id) from didi)as"第二天继续呼叫比例"

from didi a join didi b

on a.passenger_id = b.passenger_id

where datediff(a.call_time,b.call_time)=1;

滴滴数据分析岗试题分享

问题5:如果要对表中乘客进行分类,你认为需要参考哪一些因素?

基于已有的表格中数据,可以参RFM模型对用户进行分类:

R:乘客上一次打车距离3月11日的时间间隔

F:乘客在数据期间的打车频率

M:打车消费金额(表中无打车金额,可以用完成订单总时长代替)

滴滴数据分析岗试题分享

End.

作者:逆流

来源:知乎专栏

本文为转载分享,如侵权请联系后台删除

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: