趣头条数据分析实习SQL笔试题

三月份找实习时投递了趣头条的数据分析实习生,进行了笔试,当时可以说做的很不好,后来找到了算法实习,也就没有再复习SQL,最近再系统学习SQL,把当时的笔试题重新再做了一下,没有测试环境,大家看到有问题的地方欢迎指正啊

题目1.

table1是一个按天分区的用户日志表,每次一个用户登陆都会新加一行:

趣头条数据分析实习SQL笔试题_第1张图片

题目1.列出所有女性(gender为F)用户的uid(只列出200行)

Select uid from tabel1 where gender=F limit 200;

题目2.按用户年龄分组统计人数

1)需要按年龄分组统计人数,<20,20-40,41-60,>60 四组

Select 
SUM(case when age<20 then 1 else 0 end) as ‘小于20’, 
SUM(case when age>=20 and age<=40 then 1 else 0 end ) as ‘20~40’,
SUM(case when age>=41 and age<=60 then 1 else 0 end ) as ‘41~60’, 
SUM(case when age>60 then 1 else 0 end) as ‘大于60’ from table1

2)其中去掉组人数小于10000的组,并按组人数 从大到小排列

Select a.分组, count(*)  from 
(Select (case when age <1 then‘小于20’ 
              when age>=20 and age<=40 then ‘20~40’ 
              when age>=41 and age<=60 then ‘41~60’ 
              when age>60 then ‘大于60’) as‘分组’from tabel1) as a
group by a.分组 
having count(*)>10000 
order by count(*) DESC;

题目3.根据table1新建table2(按天分区的分区表): 每天新增一个分区(day=昨天),包含table1的全量用户,其中latest_login_time是截至昨天每位用户的最近一次登录时间

趣头条数据分析实习SQL笔试题_第2张图片

假设昨天是2018/8/1

select 2018/8/1 as day, uid,login_timestamp as latest_login_time  
from tabel1 as a
Where login_timestamp= 
         (select max(login_timestamp) from tabel1 as b 
              where login_timestamp < 2018/8/2 00:00 and a.uid =b.uid)

几个考点

(一)题目一:基本点考察,limit用法 送分

(二)题目二:case when 笔试中十分常见

我在这里有详细学习记录,完全覆盖到,在知乎专栏里又系统学习笔记

https://zhuanlan.zhihu.com/p/149839160

(三) 题目三:子查询、我这里用了关联子查询,日期函数

https://zhuanlan.zhihu.com/p/149802124

https://zhuanlan.zhihu.com/p/149306770

再次做的时候还是没有很熟练,还是要多练习。

你可能感兴趣的:(mysql,统计学,数据库)