需求:现在我们想通过table1表获取获奖员工的更多信息。
select * from test.`16_table1` inner join `16_table2` `16t2` on `16_table1`.id = `16t2`.id;
运行结果:
需求:我们想看用户的次日留存数、三日留存数、七日留存数(只要用户首次登录以后再登录就算留存下来了),该怎么实现呢?
根据此题也可以求出每个年级最受欢迎的课程,这里我不用窗口函数,使用连接子查询:
需求:我们想获取某一天的新增用户数,以及该天对应的过去7天内每天的平均新增用户数
需求:我们想获取每个用户的首次购买时间,以及首次购买时间是否在最近7天内
解题思路:首先按uid分组,求出每个uid的首次订单时间,然后通过case when判断首次订单时间是否大于当日七天之前的时间,如果大于则首次购买时间在最近7天内,如果小于则首次购买时间不在最近7天内
数据源:user_reg_table.csv、first_order_table.csv
需求:现在我们想获取过去7天每天的新增用户数、订单数、下单用户数
解题思路:首先求过去7天每天新增用户数,再求过去7天每天新增订单数、下单用户数,两个表join即可得到需求
数据源:user_reg_table.csv、first_order_table.csv
需求:现在我们想从用户表中随机抽取5个用户,并获取这5个用户的历史购买订单数
数据源:user_reg_table.csv、first_order_table.csv
需求:现在我们想获取沉默用户的数量,沉默的定义是已注册但最近30天内没有购买记录的用户
数据源:user_reg_table.csv、first_order_table.csv
需求:现在我们想获取最近7天注册的新用户在最近7天内的订单数是多少
需求:我们想知道有多少笔借款会在未来7天内到期,以及其中有多少笔是已经还款的
解题思路:先获取今日到未来7天所有的还款日期,求出count(id)即为借款会在未来7天内到期的数量,在计算出目前状态为还款的数量。
需求:我们想知道历史逾期的借款笔数和金额,以及至今还逾期的借款笔数和金额
数据源:Employee.csv、Department.csv
需求1:如何求出Employee表薪水最高的员工(含重复值)
第四步,按照id,result_date分组,求出result_date的个数,并取出result_date>3的个数即为连续登陆3天以上的用户
比如说001用户12号的数据为null,就需要拿10号或者14号的数据去补,而不是拿15号
思路:先做笛卡尔乘积,再取时间差的绝对值的最小值,再分组排序,取第一个
但是我这里的写法可能不太好,因为用户日活数据表数据量可能比较大,在做笛卡尔积的时候会性能较低。
不需要编写代码,也能成为Hive SQL面试高手?ChatGPT告诉你...