部门人员数据分析

MST 

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

查询前2大和前2小用户并有序拼接

MST 

一、题目 有用户账户表:包含年份,用户id和余额。请按照年份分组,取出余额前两小和前两大对应的用户id。**注意:**需要保持余额最小和最大的用户id排首位。 二、思路 1、计算每年 每个用户余额的升序排名和降序排名。升序排名前两名就是余额前两小的用户,降序排名前两名就是前两大的用户。可以使用row

有序行转列

MST 

一、题目 有学生各学科分数表,记录了学生的各科分数,请按照学生粒度,生成两列数据分别为学科和分数,要求学科内的顺序与分数顺序一致。 数据样例: 二、思路 这是一个行转列的典型问题,目标是将张三的三条记录合并为一条。根据题意最终的数据是这个样子:张三 语文,数学,英语 95,80,82。 要处理这

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

MST 

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

近30天连续登陆3天以上次数-非开窗

MST 

一、题目 有用户登录记录,已经按照日期去重。求近三十天,用户连续登录超过3天的次数,一直连续登录算一次,有间隔然后重新计算次数, 要求不能用开窗。 数据样例如下: 二、思路 这是一个连续问题:连续问题的解决思路是找到日期和升序序号差值相同的记录,相同则表示日期连续,不同则日期不连续。题目强调不能使用

查询每个学科第三名的学生的学科成绩总成绩及总排名

MST 

一、题目 有学生成绩表,包含学生姓名、学科、成绩三个字段,请用一条SQL查询出每个学科排名第三名的学生,他的学科成绩、总成绩、以及总排名。 二、思路 第一步:计算学科排名和总成绩,可以使用rank和sum的开窗函数实现 第二步:计算总成绩排名,可以使用dense_rank实现

连续点击三次以上的用户

MST 

一、题目 有用户点击日志记录表 user_click_log,包含user_id(用户ID), click_time(点击时间),请查询出连续点击三次以上的用户数, 连续点击三次:指点击记录中同一用户连续点击,中间无其他用户点击; 二、思路 看下图总结一下规律:如果一个用户连续点击中间没有其他用户,

各用户最长的连续登录天数-可间断

MST 

一、题目 现有各用户的登录记录表zbj_login_events如下,表中每行数据表达的信息是一个用户何时登录了平台。 现要求统计各用户最长的连续登录天数,间断一天也算作连续,例如:一个用户在1,3,5,6登录,则视为连续4天登录。 二、思路 这是

处理缺失值

MST 

一、题目 现有用户账户表,包含日期、用户id、用户余额,其中用户余额发生了缺失,需要进行补全。补全规则:如果余额为空则取之前最近不为空值进行填补。如果截止到最早日期都为空则补0; 二、思路 题目要求使用当天之前的余额进行补全,需要明确一点不是取前面一天而是取前面最近的不为空的余额。所以首先需要知道前

查询每个产品每年总销售额

MST 

一、题目 已知有表如下,记录了每个产品id、产品名称、产品销售开始日期、产品销售结束日期以及产品日均销售金额,请计算出每个产品每年的销售金额。 二、思路 要计算每个产品每年的销售金额,需要得到每年的销售明细,观察数据可以发现有销售开始和结束日期,可以借此得到每个产品每天的销售额,lateral vi