您现在的位置是:首页 > Javascript
当前栏目
Hive综合案例练习(中级)第二题:查询至少连续三天下单的用户
2023-04-18 14:25:00 时间
查询至少连续三天下单的用户
题目需求
查询订单信息表(order_info)中最少连续3天下单的用户id,期望结果如下:
user_id |
---|
101 |
题目解析
- 第一步:用户一天可能存在多次下单的情况,所以需要对用户进行去重
去重方法如下:
--方法一:使用distinct
select
distinct
user_id,
create_date
from order_info;
--方法二:使用group by
select
user_id,
create_date
from order_info
group by user_id, create_date;
--方法二:使用窗口函數
select
user_id,
create_date
from
(
select
user_id,
create_date,
row_number() over (partition by user_id,create_date) rn
from order_info
)t1
where rn=1;
- 第二步:具体见各个方案。
代码实现
-
方案一
select distinct user_id from ( select user_id from ( select user_id, create_date, date_sub(create_date, row_number() over (partition by user_id order by create_date)) diff from ( select user_id, create_date from order_info group by user_id, create_date )t1 )t2 group by user_id having count(diff) >= 3 )t3
-
方案二
select distinct user_id from ( select user_id, datediff(lead2, create_date) diff from ( select user_id, create_date, lead(create_date, 2, '9999-12-31') over (partition by user_id order by create_date) lead2 from ( select user_id, create_date from order_info group by user_id, create_date )t1 )t2 )t3 where diff=2;
-
方案三
select distinct user_id from ( select user_id, ts, count(*) over (partition by user_id order by ts range between 86400 preceding and 86400 following) cnt from ( select user_id, unix_timestamp(create_date, 'yyyy-MM-dd') ts from ( select user_id, create_date from order_info group by user_id, create_date )t1 )t2 )t3 where cnt=3;
相关文章
- 前端面试 【JavaScript】— typeof 是否能正确判断类型?
- 前端面试 【JavaScript】— instanceof 能否判断基本数据类型?
- 前端面试 【JavaScript】— 能不能手动实现一下 instanceof 的功能?
- 前端面试 【JavaScript】— Object.is和=== 有什么区别?
- 前端面试 【JavaScript】— JS中类型转换有哪几种?
- 前端面试 【JavaScript】— == 和 ===有什么区别?
- 前端面试 【JavaScript】— 对象转原始类型是根据什么流程运行的?
- JavaScript 的 parseInt() 函数
- javascript实现两个数字进行组合
- JS监听键盘按键
- 大前端开发中的路由管理之五:Flutter篇
- Javascript的DOM操作
- 在Vue项目中使用WebSocket技术
- 新手向:前端程序员必学基本技能——调试JS代码
- React 毁了 Web 开发!
- 「JS 逆向百例」cnki 学术翻译 AES 加密分析
- 商标注册域名后缀用什么?商标和域名有哪些区别?
- 网站建设流程是怎样的?需要看重哪些细节?
- 网站域名商标注册流程是什么?网站域名商标有什么用?
- 如何建设一个实用性强的网站 网站上线后如何运营