京东数据分析SQL面试题

💕今天来总结一下京东数据分析的sql面试题,总体来看,这几道题太经典了,大家可以回去自己写写看,我这里就直接将试题和答案写出来供大家参考。

1.考察日期函数的应用

在这里插入图片描述
思路:使用DATEDIFF()筛选

SELECT early_day,COUNT(*) "人数"
FROM(
SELECT user_id,MIN(Order_date) early_day
FROM ord
GROUP BY user_id)tmp1
WHERE DATEDIFF(CURDATE(),early_day)<30
GROUP BY early_day

2.考察case when

在这里插入图片描述
思路:要想统计这些的个数用case when,赋值,符合的为1,不符合的为0,最后再sum

SELECT Gender,
SUM(CASE WHEN '年龄'<20 THEN 1 ELSE 0 END) "20以下",
SUM(CASE WHEN '年龄'>=20 AND '年龄'<=40 THEN 1 ELSE 0 END) "20~40",
SUM(CASE WHEN '年龄'>40 THEN 1 ELSE 0 END) "40以上",
from user
GROUP BY Gender;

3.考察窗口函数

在这里插入图片描述
思路:窗口函数排序选第一

SELECT category,product,sum_sale
(SELECT *,RANK()over(PARTITION by category ORDER BY sum_sale DESC) rk
FROM(
SELECT category,product,COUNT(sale_num) sum_sale
FROM ord
GROUP BY category,product)tmp1)tmp2
WHERE rk=1;

4.考察窗口函数和日期函数

在这里插入图片描述
思路:我们将窗口类型的排序转化为日期的一天,然后将登陆日期与排序做差,如果连续登录,则差值相等,分组求和即可等到连续登录的天数。

--方法一
SELECT user_id,subday,COUNT(*) continues
FROM
(SELECT user_id,DATE_SUB( request_date,INTERVAL rk DAY) subday
FROM
(SELECT user_id,DATE_FORMAT(request_tm,'%Y-%m-%D') request_date,ROW_NUMBER()over(PARTITION BY user_id ORDER BY DATE_FORMAT(request_tm,'%Y-%m-%D')) rk
FROM deng)tmp1)tmp2
GROUP BY user_id,subday
HAVING continues=2


--方法二
SELECT user_id,sub_date,COUNT(*) log_times
FROM(
SELECT user_id,DATE_SUB(log_date,INTERVAL rk DAY) sub_date
FROM(
SELECT user_id,log_date,ROW_NUMBER()over(PARTITION by user_id) rk
FROM(
SELECT  user_id,DATE_FORMAT(request_tm,'%Y-%m-%D') log_date
FROM deng)tmp1)tmp2)tmp3
GROUP BY user_id,sub_date
HAVING log_times=2

总结

这几道题就是面试最爱出的几种类型的题目,很经典,接触过的同学后面碰到类似的题目就容易做,大家一定要好好看看窗口函数和日期函数,这些是面试的热点。

  • 10
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柳小葱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值