大数据面试SQL(五):查询最近一笔有效订单

文章目录

查询最近一笔有效订单

一、题目

二、分析

三、SQL实战

四、样例数据参考 


查询最近一笔有效订单

一、题目

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

请查询出每笔订单的上一笔有效订单,注意不是每笔订单都是有效的。

样例数据:

目标结果:

二、分析

本题是查询上一条记录的升级版本,所以考察的lag()函数,但是我们也不知道上一单是有效还是无效,所以这个题目难度就增加了很多。

维度评分
题目难度⭐️⭐️⭐️⭐️⭐️
题目清晰度⭐️⭐️⭐️⭐️
业务常见度⭐️⭐️⭐️⭐️

三、SQL实战

1、先查询出有效订单,然后计算出每笔有效订单的上一单有效订单。

查询语句:

select ord_id,ord_time,user_name,is_valid,lag(ord_id) over (partition by user_name order by ord_time asc) as last_valid_ord_id
from (select ord_id,ord_time,user_name,is_validfrom t5_orderwhere is_valid = 1) t;

查询结果:

2、原始的明细数据与新的有效订单表按照用户进行关联,有效订单表的订单时间大于等于原始订单表。

查询语句:

with tmp as (-- 有效订单及其上一单有效记录select ord_id,ord_time,user_name,is_valid,lag(ord_id) over (partition by user_name order by ord_time asc) as last_valid_ord_idfrom (select ord_id,ord_time,user_name,is_validfrom t5_orderwhere is_valid = 1) t)
select t1.*,t2.*
from t5_order t1
left join tmp t2 on t1.user_name = t2.user_name
where t1.ord_time <= t2.ord_time;

查询结果:

3、使用row_number,原始订单记录表中的user_name、ord_id进行分组,按照有效订单表的时间排序,增加分组排序。

查询语句:

with tmp as (-- 有效订单及其上一单有效记录select ord_id,ord_time,user_name,is_valid,lag(ord_id) over (partition by user_name order by ord_time asc) as last_valid_ord_idfrom (select ord_id,ord_time,user_name,is_validfrom t5_orderwhere is_valid = 1) t)
select t1.*,t2.*,row_number() over (partition by t1.ord_id,t1.user_name order by t2.ord_time asc) as rn
from t5_order t1
left join tmp t2 on t1.user_name = t2.user_name
where t1.ord_time <= t2.ord_time;

我们可以看出,最终我们需要的就是rn=1 的记录。 

查询结果:

4、去除冗余字段,筛选rn=1 的记录。

查询语句:

with tmp as (-- 有效订单及其上一单有效记录select ord_id,ord_time,user_name,is_valid,lag(ord_id) over (partition by user_name order by ord_time asc) as last_valid_ord_idfrom (select ord_id,ord_time,user_name,is_validfrom t5_orderwhere is_valid = 1) t
)
select * from
(select t1.*,t2.*,row_number() over (partition by t1.ord_id,t1.user_name order by t2.ord_time asc) as rn
from t5_order t1
left join tmp t2 on t1.user_name = t2.user_name
where t1.ord_time <= t2.ord_time) tt
where tt.rn = 1;

查询结果:

四、样例数据参考 

--建表语句
create table t5_order
(ord_id bigint COMMENT '订单ID',ord_time string COMMENT '订单时间',user_name string COMMENT '用户名',is_valid int COMMENT '订单是否有效'
);
-- 数据插入
insert into t5_order(ord_id,ord_time,user_name,is_valid)
values(1,'2024-08-11 12:01:03','姬小满',1),(2,'2024-08-11 12:02:06','姬小满',0),(3,'2024-08-11 12:03:15','姬小满',0),(4,'2024-08-11 12:04:20','姬小满',1),(5,'2024-08-11 12:05:03','姬小满',1),(6,'2024-08-11 12:01:02','甄姬',1),(7,'2024-08-11 12:03:03','甄姬',0),(8,'2024-08-11 12:04:01','甄姬',1),(9,'2024-08-11 12:07:03','甄姬',1);

  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/395174.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue - 关于vue-kinesis 移动动画组件

Vue - 关于vue-kinesis 移动动画组件 vue-kinesis可以根据鼠标移动或滚动条来控制元素动画的动画效果&#xff1b;除此之外&#xff0c;vue-kinesis 还可以设置音频文件&#xff0c;根据音频频率来控制动画的跳动效果。 一、安装vue-kinesis Vue2版本&#xff1a; 1.安装 …

2024.8.08(python)

一、搭建python环境 1、检查是否安装python [rootpython ~]# yum list installed | grep python [rootpython ~]# yum list | grep python3 2、安装python3 [rootpython ~]# yum -y install python3 安装3.12可以使用源码安装 3、查看版本信息 [rootpython ~]# python3 --vers…

数字信号处理2: 离散信号与系统的频谱分析

文章目录 前言一、实验目的二、实验设备三、实验内容四、实验原理五、实验步骤1.序列的离散傅里叶变换及分析2.利用共轭对称性&#xff0c;设计高效算法计算2个N点实序列的DFT。3.线性卷积及循环卷积的实现及二者关系分析4.比较DFT和FFT的运算时间5.利用FFT求信号频谱及分析采样…

游戏行业最新报告 | 2024年1—6月:中国游戏市场收入上升至1472.67亿元

2024年1—6月收入&#xff1a;达1472.67亿元&#xff0c;同比增长2.08% 伽马数据提供的数据显示&#xff1a;2024年1—6月&#xff0c;国内游戏市场实际销售收入1472.67亿元&#xff0c;同比增长2.08%&#xff0c;增长趋势较为平稳。 中国市场实际销售收入及增长率 游戏用户达…

(24)(24.2) Minim OSD快速安装指南(一)

文章目录 前言 1 概述 2 基本接线图 3 关键冷却条件的可选设置 4 固件可用于MinimOSD 5 MWOSD 前言 MinimOSD “屏幕显示”是一个小型电路板&#xff0c;它从你的自动驾驶仪中提取遥测数据&#xff0c;并将其覆盖在你的第一人称视图监视器上(First Person View)。Minim …

极限挑战:40亿个非负整数中找到没有出现的数(bit数组)

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 大家好!我是小米,一个积极活泼、热爱分享技术的29岁程序员。今天,我们一起来探讨一个有趣且实用的算法问题:如何在40亿个非负整数中找到没有出现的数…

Powershell 禁用系统更新

创建一个关闭系统更新脚本 脚本系统兼容10,11,2012,206,2019,2022,2025powershell-install-stop-System-update.ps1 <# Powershell Install stop System update +++++++++++++++++++++++++++++++++++++++++++++++++++++ + _____ _____ _ …

供应商较多的汽车制造业如何选择供应商协同平台?

汽车制造业的供应商种类繁多&#xff0c;根据供应链的不同环节和产品特性&#xff0c;可以大致分为以下几类。 按供应链等级分包括&#xff1a; 一级供应商通常具有较高的技术水平和生产能力&#xff0c;能够满足汽车厂商对零部件的高品质、高性能和高可靠性的要求。 二级供应…

ImportError: DLL load failed while importing _rust: 找不到指定的程序的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【Android Studio】Webview 内核升级得三种方法

【Android Studio】Webview 内核升级得三种方法 前言X5 腾讯组件crosswalk开源项目webview升级加载的内核&#xff08;完美解决&#xff09;总结 前言 在APP 中进行网页加载&#xff0c;一般采用原生自带的Webview 组件&#xff0c;但在需要加载高版本网页的时候&#xff0c;有…

【CSS入门】第三课 - padding内填充

上一节&#xff0c;我们说了margin外边距&#xff0c;还举了个例子&#xff0c;比如两个人紧挨着站着&#xff0c;如果两个人冬天穿了棉袄&#xff0c;很厚很厚的棉袄&#xff0c;那么他俩占据的空间就会增加&#xff0c;他俩之间的真实距离也会增加。 这一节&#xff0c;我们…

《暗黑破坏神 IV》是什么类型的游戏,苹果电脑能玩暗黑破坏神吗 crossover玩暗黑4

《暗黑破坏神 IV》&#xff08;Diablo IV&#xff09;是由暴雪娱乐开发的一款动作角色扮演游戏&#xff08;Action RPG&#xff09;&#xff0c;是广受欢迎的《暗黑破坏神》系列的最新作品。暗黑破坏神4拥有出色的游戏画面、音效和丰富的游戏玩法&#xff0c;非常值得玩家们去尝…

SpringBoot3热部署

引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional> </dependency> 默认就是,无需配置 可以了…

ADB Installer 0 file(s)copied

在为泡面神器刷安卓&#xff0c;做准备工作装ADB时报错了&#xff0c;以下是报错提示 再用cmd命令adb version验证下&#xff0c;提示adb不是有效命令&#xff0c;百分百安装失败了&#xff0c;往上各种搜索查询均没有对症的&#xff0c;其中也尝试了安装更新版本的&#xff0c…

翻译: 可视化深度学习反向传播原理一

本期我们来讲反向传播 也就是神经网络学习的核心算法 稍微回顾一下我们之前讲到哪里之后 首先我要撇开公式不提 直观地过一遍 这个算法到底在做什么 然后如果你们有人想认真看里头的数学 下一期影片我会解释这一切背后的微积分 如果你看了前两期影片 或者你已经有足够背景知…

牛羊肉巨头的数字化战略:凯宇星辉如何领先市场

凯宇星辉的创业成长史&#xff0c;给出了中国牛羊肉企业如何从散户走向集团化经营的路线图。 总部位于大连的凯宇星辉&#xff0c;在牛羊肉进口贸易领域白手起家&#xff0c;十余年时间&#xff0c;已形成以澳新、南美、北美等全球三大牛羊肉主产区为主渠道的全球直采网络布局…

《MySQL数据库》 数据类型、约束、键的使用—/—<5>

一、常见数据类型 1、数值类型&#xff1a; INT、BIGINT、FLOAT、DOUBLE&#xff0c;DECIMAL等。 INT&#xff08;整型&#xff09;&#xff1a;通常占用4个字节&#xff0c;可以存储范围为-2^31到2^31-1的整数。 BIGINT&#xff08;大整型&#xff09;&#xff1a;通常占用8…

【OCCT】第3讲 OpenCasCadeVTK实现三维建模Demo

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享OpenCasCade&VTK共同实现三维建模Demo,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1.…

AI2021矢量图形软件:Illustrator 2021 Win/Mac 直装版

dobe Illustrator 2021是一款功能强大的矢量图形设计软件&#xff0c;广泛应用于出版、多媒体和在线图像制作领域。该软件特别适用于印刷出版、海报书籍排版、专业插画、多媒体图像处理以及网页设计&#xff0c;能够提供高精度和控制的线稿&#xff0c;适合处理从简单到复杂各种…

SpringBoot 自动装配原理

零、前言 Spring简直是java企业级应用开发人员的春天&#xff0c;我们可以通过Spring提供的ioc容器&#xff0c;避免硬编码带来的程序过度耦合。但是&#xff0c;启动一个Spring应用程序也绝非易事&#xff0c;他需要大量且繁琐的xml配置&#xff0c;开发人员压根不能全身心的…