本文整理了互联网大厂数据开发、数据分析、数仓等数据相关岗位面试过程中经常出现的SQL面试题,并给出了参考答案。涉及了炸裂函数、开窗函数、聚合函数开窗、在线直播人数等 以及这两年各大厂面疯了各种连续问题。

公司

面试题目

题目简介

详细内容及参考答案

字节跳动

最高峰同时直播人数

有如下数据记录直播平台主播上播及下播时间,根据该数据计算出平台最高峰同时直播人数。

SQL面试题-字节跳动大数据面试SQL-最高峰同时直播人数

字节跳动

每分钟最大直播人数

有如下数据记录直播平台主播上播及下播时间,根据该数据计算出平台每分钟最大直播人数。

SQL面试题-字节跳动大数据面试SQL-每分钟最大直播人数.

字节跳动

股票波峰波谷

有如下数据,记录每天每只股票的收盘价格,请查出每只股票的波峰和波谷的日期和价格; 波峰:股票价格高于前一天和后一天价格时为波峰 波谷:股票价格低于前一天和后一天价格是为波谷

SQL面试题-字节跳动大数据面试SQL-股票波峰波谷

字节跳动

合并日期重叠的活动

已知有表记录了每个大厅的活动开始日期和结束日期,每个大厅可以有多个活动。请编写一个SQL查询合并在同一个大厅举行的所有重叠的活动,如果两个活动至少有一天相同,那他们就是重叠的

SQL面试题-字节跳动大数据面试SQL-合并日期重叠的活动

字节跳动

查询最近一笔有效订单

现有订单表t_order,包含订单ID,订单时间,下单用户,当前订单是否有效

SQL面试题-字节跳动大数据面试SQL-查询最近一笔有效订单

字节跳动

共同使用ip用户检测问题

现有用户登录日志表,记录了每个用户登录的IP地址,请查询共同使用过3个及以上IP的用户对;

SQL面试题-字节跳动大数据面试SQL-共同使用ip用户检测问题

美团

每分钟最大直播人数

有如下数据记录直播平台主播上播及下播时间,根据该数据计算出平台每分钟最大直播人数。

SQL面试题-美团大数据面试SQL-每分钟最大直播人数.

拼多多

累加刚好超过各省GDP40%的地市名称

现有各省地级市的gdp数据,求从高到底累加刚好超过各省GDP40%的地市名称,临界地市也需要。 例如:浙江省的杭州24% 宁波 20% ,杭州+宁波=44% 大于40% 取出杭州、宁波。江苏省的苏州19% 南京 14% 无锡 12%,苏州+南京=33% ,苏州+南京+无锡=45%,取出 苏州、南京、无锡

SQL面试题-拼多多大数据面试SQL-累加刚好超过各省GDP40%的地市名称

拼多多

求连续段的起始位置和结束位置

有一张表t_id记录了id,id不重复,但是会存在间断,求出连续段的起始位置和结束位置。

SQL面试题-拼多多大数据面试SQL-求连续段的起始位置和结束位置

拼多多

求连续段的最后一个数及每个连续段的个数

有一张表t_id记录了id,id不重复,但是会存在间断,求出连续段的最后一个数及每个连续段的个数

SQL面试题-拼多多大数据面试SQL-求连续段的最后一个数及每个连续段的个数

小红书

品牌营销活动天数

有营销活动记录表,记录了每个品牌每次营销活动的开始日期和营销活动的结束日期,现需要统计出每个品牌的总营销天数。 注意: 1:苹果第一行数据的营销结束日期比第二行数据的营销开始日期要晚,这部分有重叠的日期的要去重计算。 2:苹果第二行数据的营销结束日期和第三行的开始日期不连续,2019-09-07以及2019-09-08不统计到营销天数中。

SQL面试题-小红书大数据面试SQL-品牌营销活动天数

小红书

用户商品购买收藏行为特征加工

已知有:购买记录表t_order,包含自增id:id,用户ID:user_id,商品ID:goods_id,订单时间:order_time,商品类别:goods_type;用户收藏记录表t_collect_log,包含自增id,用户ID:user_id,商品ID:goods_id,收藏时间 collect_time;请用一句sql语句得出以下查询结果,得到所有用户的商品行为特征,其中用户行为分类为4种:是否已购买、购买未收藏、收藏未购买、收藏且购买。

SQL面试题-小红书大数据面试SQL-用户商品购买收藏行为特征加工

小红书

查询每个用户的第一条和最后一条记录

现有一张订单表 t_order 有订单ID、用户ID、商品ID、购买商品数量、购买时间,请查询出每个用户的第一条记录和最后一条记录。

SQL面试题-小红书大数据面试SQL-查询每个用户的第一条和最后一条记录

快手

最高峰同时直播人数

有如下数据记录直播平台主播上播及下播时间,根据该数据计算出平台最高峰同时直播人数。

SQL面试题-快手大数据面试SQL-最高峰同时直播人数

快手

用户中两人一定认识的组合数

有某城市网吧上网记录表,包含字段:网吧id,访客id(身份证号),上线时间,下线时间。规则1:如果两个用户在同一个网吧上线时间或者下线时间间隔在10分钟以内,则两个用户可能认识;规则2:如果两个用户在三家以上的网吧出现过【规则1】可能认识的情况,则两人一定认识;请计算该市中两人一定认识的组合数

SQL面试题-快手大数据面试SQL-用户中两人一定认识的组合数

腾讯

向用户推荐好友喜欢的音乐

现有三张表分别为:用户关注表t_follow(user_id,follower_id)记录用户ID及其关注的人ID,请给用户1推荐他关注的用户喜欢的音乐名称

SQL面试题-腾讯大数据面试SQL-向用户推荐好友喜欢的音乐

腾讯

占据好友封面个数

有两个表,朋友关系表user_friend,用户步数表user_steps。朋友关系表包含两个字段,用户id,用户好友的id;用户步数表包含两个字段,用户id,用户的步数.查询: 占据多少个好友的封面(在好友的列表中排行第一,且必须超过好友的步数)

SQL面试题-腾讯大数据面试SQL-占据好友封面个数

腾讯

合并连续支付订单

现有一张用户支付表:t_user_pay包含字段订单ID,用户ID,商户ID,支付时间,支付金额。如果同一用户在同一商户存在多笔订单,且中间该用户没有其他商户的支付记录,则认为是连续订单,请把连续订单进行合并,时间取最早支付时间,金额求和

SQL面试题-腾讯大数据面试SQL-合并连续支付订单

腾讯

连续登陆超过N天的用户

现有用户登录日志表 t_login_log,包含用户ID(user_id),登录日期(login_date)。数据已经按照用户日期去重,请查出连续登录超过4天的用户ID

SQL面试题-腾讯大数据面试SQL-连续登陆超过N天的用户

腾讯

微信运动步数在好友中的排名

有两个表,朋友关系表user_friend,用户步数表user_steps。朋友关系表包含两个字段,用户id,用户好友的id;用户步数表包含两个字段,用户id,用户的步数.用户在好友中的排名

SQL面试题-腾讯大数据面试SQL-微信运动步数在好友中的排名

百度

股票波峰波谷

有如下数据,记录每天每只股票的收盘价格,请查出每只股票的波峰和波谷的日期和价格; 波峰:股票价格高于前一天和后一天价格时为波峰 波谷:股票价格低于前一天和后一天价格是为波谷

SQL面试题-百度大数据面试SQL-股票波峰波谷

百度

合并用户浏览行为

有一份用户访问记录表,记录用户id和访问时间,如果用户访问时间间隔小于60s则认为时一次浏览,请合并用户的浏览行为。

SQL面试题-百度大数据面试SQL-合并用户浏览行为

百度

无效搜索

现有一份用户搜索日志,包含用户ID,时间,用户搜索内容。定义 无效搜索:如果用户下一次搜索内容中包含本次搜索内容,则认为本次搜索为无效搜索。请查询用户无效搜索记录

SQL面试题-百度大数据面试SQL-无效搜索

京东

合并数据

已知有数据A如下,请分别根据A生成B和C。

SQL面试题-京东大数据面试SQL-合并数据

滴滴

取出累计值与1000差值最小的记录

已知有表t_cost_detail包含id和money两列,id为自增,请累加计算money值,并求出累加值与1000差值最小的记录。

SQL面试题-滴滴大数据面试SQL-取出累计值与1000差值最小的记录

三一重工

部门人员数据分析

现有一张员工在职所在部门信息表,包含员工ID、所属部门、开始日期、结束日期,请查询出如下内容1.2024年1月31日A部门在职员工数;2.2024年1月份A部门员工最多时有多少员工;3.2024年1月份A部门平均有多少员工;

SQL面试题-三一重工大数据面试SQL-部门人员数据分析

华为

合并日期重叠的活动

已知有表记录了每个大厅的活动开始日期和结束日期,每个大厅可以有多个活动。请编写一个SQL查询合并在同一个大厅举行的所有重叠的活动,如果两个活动至少有一天相同,那他们就是重叠的

SQL面试题-华为大数据面试SQL-合并日期重叠的活动

meta

计算每个用户的受欢迎程度

有好友关系表t_friend,记录了user1_id,user2_id的好友关系对。现定义用户受欢迎程度=用户拥有的朋友总数/平台上的用户总数,请计算出每个用户的受欢迎程度。

SQL面试题-meta大数据面试SQL-计算每个用户的受欢迎程度

其他常见

每年成绩都有所提升的学生

一张学生成绩表(student_scores),有year-学年,subject-课程,student-学生,score-分数这四个字段,请完成如下问题:问题1:每年每门学科排名第一的学生.问题2:每年总成绩都有所提升的学生

SQL面试题-常见大数据面试SQL-每年成绩都有所提升的学生

其他常见

连续点击三次用户

有用户点击日志记录表 t_click_log,包含user_id(用户ID),click_time(点击时间),请查询出连续点击三次的用户数,连续点击三次:指点击记录中同一用户连续点击,中间无其他用户点击;

SQL面试题-常见大数据面试SQL-连续点击三次用户

其他常见

去掉最大最小值的部门平均薪水

有员工薪资表t_salary,包含员工ID(emp_id),部门ID(depart_id),薪水(salary),请计算去除最高最低薪资后的平均薪水;(每个部门员工数不少于3人)

SQL面试题-常见大数据面试SQL-去掉最大最小值的部门平均薪水

其他常见

当前活跃用户连续活跃天数

有用户登录日志表,包含日期、用户ID,当天是否登录,请查询出当天活跃的用户当前连续活跃天数

SQL面试题-常见大数据面试SQL-当前活跃用户连续活跃天数

其他常见

销售额连续3天增长的商户

有一张订单记录表 t_order 包含 订单ID(order_id),商户ID(shop_id),订单时间(order_time)和订单金额(order_amt),请查询出过去至少存在3天销售额连续增长的商户

SQL面试题-常见大数据面试SQL-销售额连续3天增长的商户

其他常见

不及格课程数大于2的学生的平均成绩及其排名

有学生每科科目成绩,求不及格课程数大于2的学生的平均成绩及其成绩平均值后所在的排名。

SQL面试题-常见大数据面试SQL-不及格课程数大于2的学生的平均成绩及其排名

其他常见

计算次日留存率

现有用户登录记录表,已经按照用户日期进行去重处理。以用户登录的最早日期作为新增日期,请计算次日留存率是多少

SQL面试题-常见大数据面试SQL-计算次日留存率

其他常见

按照顺序进行行转列拼接

已知有表中含有两列数据id,val,数据内容如下,请按照id的大小将val进行拼接。

SQL面试题-常见大数据面试SQL-按照顺序进行行转列拼接

其他常见

所有考试科目的成绩都大于对应学科平均成绩的学生

有学生每科科目成绩,找出所有科目成绩都大于对应学科的平均成绩的学生

SQL面试题-常见大数据面试SQL-所有考试科目的成绩都大于对应学科平均成绩的学生

其他常见

用户行为路径分析

有一张用户操作行为记录表 t_act_log 包含用户ID(user_id),操作编号(op_id),操作时间(op_time)要求:统计每天符合以下条件的用户数:A操作之后是B操作,AB操作必须相邻;统计每天用户行为序列为A-B-D的用户数;其中:A-B之间可以有任何其他浏览记录(如C,E等),B-D之间除了C记录可以有任何其他浏览记录(如A,E等)

SQL面试题-常见大数据面试SQL-用户行为路径分析