阿里面试SQL-连续售出的商品

推荐阅读文章列表

大数据开发面经汇总【持续更新...】

我的大数据学习之路

大数据开发面试笔记V6.0

SQL题目

来自阿里数据分析二面

有一张淘宝购物订单表dwd_tb_order_detail_di,包含order_id(订单id)、commodity_id (商品id)、ds(下单时间)

问题:计算连续下单大于或等于3次的商品id

-- 举例如下:
-- 输入
order_id commodity_id       ds
    1         A      2024-12-21 10:10
    2         B      2024-12-21 10:12
    3         B      2024-12-21 10:15
    4         B      2024-12-21 10:20
    5         A      2024-12-21 10:40
    6         C      2024-12-21 11:05
    7         C      2024-12-21 11:10
    8         C      2024-12-21 11:30

-- 输出
commodity_id
    B
    C

答案解析

模拟数据

create table dwd_tb_order_detail_di (
order_id varchar(20),
commodity_id varchar(20),
ds varchar(20)
);
INSERT INTO dwd_tb_order_detail_di VALUES 
('1','A','2024-12-21 10:10'),
('2','B','2024-12-21 10:12'),
('3','B','2024-12-21 10:15'),
('4','B','2024-12-21 10:20'),
('5','A','2024-12-21 10:40'),
('6','C','2024-12-21 11:05'),
('7','C','2024-12-21 11:10'),
('8','C','2024-12-21 11:30')
;

思路分析

本题不同于常见的连续多次登录问题

何为连续购买三次及以上的商品?即此次购买商品后,下一次购买仍然是该商品,下下次购买仍然是该商品,下下下次购买可以是该商品也可以不是(不考虑下下下次)

具体代码

select commodity_id
from (
    select 
        commodity_id,
        lead(commodity_id, 1) over(order by ds) commodity_id_1,
        lead(commodity_id, 2) over(order by ds) commodity_id_2
    from dwd_tb_order_detail_di
) t
where commodity_id = commodity_id_1 
and commodity_id = commodity_id_2
group by commodity_id
;

全部评论

相关推荐

2024-12-24 19:45
门头沟学院 Python
精致的大熊猫希望offer多多:看你选择的方向,本人也是同专业的。 1.数开方向 2.数分方向 3.算法方向 4.AI大模型 练手项目的话我手上也没有,但是你可以去找资源,和鲸社区、Kaggle这些平台上就有不少适合练手的项目资源。对于数开方向,你可以尝试一些数据清洗与预处理相关的项目,像从杂乱的电商销售数据中提取有效信息,规整数据格式,为后续的分析和建模做准备,这能很好地锻炼你对数据的基础操作能力。 数分方向的话,不妨做一些探索性数据分析(EDA)的项目,比如分析某地区的房价数据,通过可视化手段挖掘房价与房屋面积、房龄、周边配套等因素之间的潜在关系,提升你解读数据、发现规律的能力。 要是选择算法方向,简单的机器学习算法实现项目是不错的选择,比如自己动手实现一个K近邻算法,应用在鸢尾花数据集分类任务上,加深对算法原理和应用的理解。 至于AI大模型方向,你可以从微调一些开源的小模型入手,例如在特定的文本数据集上微调BERT模型用于情感分析,初步接触大模型的优化和实际应用。在实践过程中,多查阅相关的技术文档和论文,遇到问题积极在技术论坛上交流,相信你能快速提升自己在所选方向的能力。
点赞 评论 收藏
分享
评论
3
5
分享

创作者周榜

更多
牛客网
牛客企业服务