京东数据分析SQL面试题

Posted 柳小葱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了京东数据分析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

总结

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

以上是关于京东数据分析SQL面试题的主要内容,如果未能解决你的问题,请参考以下文章

百度用户增长SQL面试题

百度用户增长SQL面试题

HiveSQL面试题47:京东面试题

最新115道华为京东滴滴美团精选Java面试题整理

Java-京东面试题

京东JAVA面试心得与面试题详解,总结到位!