当前位置: 首页 > news >正文

【Hive SQL 每日一题】统计用户连续下单的日期区间

文章目录

      • 测试数据
      • 需求说明
      • 需求实现

测试数据

create table test(user_id string,order_date string);INSERT INTO test(user_id, order_date) VALUES('101', '2021-09-21'),('101', '2021-09-22'),('101', '2021-09-23'),('101', '2021-09-27'),('101', '2021-09-28'),('101', '2021-09-29'),('101', '2021-09-30'),('102', '2021-10-01'),('102', '2021-10-02'),('102', '2021-10-05'),('102', '2021-10-06'),('102', '2021-10-07'),('106', '2021-10-04'),('106', '2021-10-05'),('106', '2021-10-08'),('107', '2021-10-05'),('107', '2021-10-06');

需求说明

统计用户连续下单的日期区间,所以连续的下单日期必须 >= 2,例如:2023-01-01,2023-01-02

分析步骤如下:

  1. user_idorder_date 进行分组,同天的下单日期只保留一条。

  2. 使用 row_number 窗口函数对行号进行标记。

  3. 使用 date_sub 函数与行号标记进行运算,如果数据连续的话,那么运算后的日期必然是一样的。

  4. user_iddate_sub 运算后日期进行分组,过滤数量 < 2 的分组,最大值与最小值日期统计。

需求实现

selectuser_id,min(order_date) order_start_date,max(order_date) order_end_date
from(selectuser_id,order_date,date_sub(order_date,rn) same_dayfrom(selectuser_id,order_date,row_number() over (partition by user_id order by order_date) rnfromtestgroup byuser_id,order_date )t1 -- 分组后进行行号标记)t2 -- 使用日期和行号进行运算
group byuser_id,same_day
havingcount(user_id) >= 2;

输出结果

在这里插入图片描述

解决这题的关键是使用 row_number 窗口函数进行行号标记,然后和 date_sub 进行运算,如果日期是连续的,那么运算结果得到的日期就是一致的,如下所示:

date		rn
2023-05-04 	1
2023-05-05 	2
2023-05-06 	3

运算后,日期结果都为 2023-05-03,显然该日期是连续的,利用这一特性完成该需求。

相关文章:

【Hive SQL 每日一题】统计用户连续下单的日期区间

文章目录 测试数据需求说明需求实现 测试数据 create table test(user_id string,order_date string);INSERT INTO test(user_id, order_date) VALUES(101, 2021-09-21),(101, 2021-09-22),(101, 2021-09-23),(101, 2021-09-27),(101, 2021-09-28),(101, 2021-09-29),(101, 20…...

RabbitMQ 镜像集群部署

镜像集群原理 特征 默认情况下&#xff0c;队列只保存在创建该队列的节点上。而镜像模式下&#xff0c;创建队列的节点被称为该队列的主节点&#xff0c;队列还会拷贝到集群中的其它节点&#xff0c;也叫做该队列的镜像节点。 但是&#xff0c;不同队列可以在集群中的任意节…...

SpringMVC框架学习

java 学习笔记指路 基础知识 Python转java补充知识 Java中常见的名词解释 前端 【黑马程序员pink老师前端】HTML 【黑马程序员pink老师前端】JavaScript基础大总结 【黑马程序员pink老师前端】JavaScript函数与作用域 【黑马程序员pink老师前端】JavaScript对象 数据库 【黑马程…...

多通道振弦数据记录仪应用桥梁安全监测的解决方案

多通道振弦数据记录仪应用桥梁安全监测的解决方案 城市化进程的加快和交通运输的发展&#xff0c;桥梁作为连接城市的重要交通工具&#xff0c;其安全性也变得越来越重要。为了保证桥梁的安全性&#xff0c;需要进行定期的监测和维护。其中&#xff0c;多通道振弦数据记录仪是…...

RDMA 相关bug记录

对于 Client 来讲&#xff0c;setupConnection 中的 cm_id 应该是本地的&#xff0c;意味着后续 create pd \ cq \ qp 等等传入的 cm_id 都是本地 id。但是对于 Server 来讲&#xff0c;收到 client 的链接请求时将 client 的 cm_id 传入 setupConnection&#xff0c;意味着后续…...

TDengine函数大全-时序库特有函数

以下内容来自 TDengine 官方文档 及 GitHub 内容 。 以下所有示例基于 TDengine 3.1.0.3 TDengine函数大全 1.数学函数 2.字符串函数 3.转换函数 4.时间和日期函数 5.聚合函数 6.选择函数 7.时序数据库特有函数 8.系统函数 时序库特有函数 TDengine函数大全CSUMDERIVATIVEDIFF…...

vue-cli3项目本地启用https,并用mkcert生成证书

在项目根目录下的vue.config.js文件中&#xff1a; // vue.config.js module.exports {devServer: {host:dev.nm.cngc// 此处开启 https,并加载本地证书&#xff08;否则浏览器左上角会提示不安全&#xff09;https: {cert: fs.readFileSync(path.join(_dirname,./cert.crt)…...

包装类笔记

包装类 5.1 概述 Java 提供了两个类型系统&#xff0c;基本类型与引用类型&#xff0c;使用基本类型在于效率&#xff0c;然而很多情况&#xff0c;会创建对象使用&#xff0c;因为对象可以做更多的功能&#xff0c;如果想要我们的基本类型像对象一样操作&#xff0c;就可以使…...

TC和TG油封有什么区别?

油封是各种机械系统(包括发动机和工业机械)中的重要部件&#xff0c;因为它们可以防止润滑剂和污染物的泄漏。在可用的不同类型的油封中&#xff0c;常用的是TC和TG密封件。在本文中&#xff0c;我们将讨论TC和TG油封之间的差异&#xff0c;帮助您了解它们的独特特性和应用。 …...

大数据之MapReduce

MapReduce概述 是一个分布式的编程框架&#xff0c;MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个Hadoop集群上。 优点&#xff1a; 易于编程&#xff0c;简单的实现一些接口&#xff0c;就可以完成一…...

《机器人学一(Robotics(1))》_台大林沛群 第 5 周【机械手臂 轨迹规划】 Quiz 5

我又行了&#xff01;&#x1f923; 求解的 位置 可能会有 变动&#xff0c;根据求得的A填写相应值即可。注意看题目。 coursera链接 文章目录 第1题 Cartesian space求解 题1-3 的 Python 代码 第2题第3题第4题 Joint space求解 题4-6 的 Python 代码 第5题第6题其它可参考代…...

嵌入式面试/笔试C相关总结

1、存储 单片机端编译后分为code ro rw zi几个区域&#xff0c;其中code是执行文件&#xff0c;ro(read only)只读区域&#xff0c;存放const修饰常量、字符串。rw(read write)存放已初始化变量。zi存放未初始化变量。编译完成后bin大小为coderorw。运行时所需内存为rwzi。 在电…...

支付宝使用OceanBase的历史库实践分享

为解决因业务增长引发的数据库存储空间问题&#xff0c;支付宝基于 OceanBase 数据库启动了历史库项目&#xff0c;通过历史数据归档、过期数据清理、异常数据回滚&#xff0c;实现了总成本降低 80%。 历史数据归档&#xff1a;将在线库&#xff08;SSD 磁盘&#xff09;数据归…...

accelerate 分布式技巧(一)

accelerate分布式技巧 简单使用 Accelerate是一个来自Hugging Face的库&#xff0c;它简化了将单个GPU的PyTorch代码转换为单个或多台机器上的多个GPU的代码。 Accelerate精确地抽象了与多GPU/TPU/fp16相关的模板代码&#xff0c;并保持Pytorch其余代码不变。 import torchim…...

密码找回安全

文章目录 密码找回安全任意秘密重置 密码找回安全 用户提交修改密码请求;账号认证:服务器发送唯一ID (例如信验证码)只有账户所有者才能看的地方&#xff0c;完成身份验证&#xff1b;身份验证:用户提交验证码完成身份验证;修改密码:用户修改密码。 任意秘密重置 登录metinfo4…...

Spring Boot + Vue的网上商城之商品管理

Spring Boot Vue的网上商城之商品管理 在网上商城中&#xff0c;商品管理是一个非常重要的功能。它涉及到商品的添加、编辑、删除和展示等操作。本文将介绍如何使用Spring Boot和Vue来实现一个简单的商品管理系统。 下面是一个实现Spring Boot Vue的网上商城之商品管理的思路…...

B站:提高你的词汇量:如何用英语谈论驾驶

视频链接&#xff1a;提高你的词汇量:如何用英语谈论驾驶_哔哩哔哩_bilibili 英文音标中文hood/hʊd/n. 汽车的引擎盖go over仔细检查&#xff1b;认真讨论&#xff1b;用心思考There are plenty of videos go over this.有很多关于这个的视频unlockvt. 发现&#xff1b;揭开&…...

大前端面试注意要点

前端面试&#xff1a;从IT专家角度全面解析 在数字时代&#xff0c;前端开发工程师的角色变得越来越重要。随着网站和应用程序的复杂性和交互性越来越高&#xff0c;对具有专业技能的前端开发人员的需求也在不断增长。对于正在寻找前端开发职位的开发者&#xff0c;或者正在寻…...

稻盛和夫-如是说(读书笔记)

本书解答的核心问题&#xff1a; “今天&#xff0c;我们需要的不是短期有效的处方。作为人&#xff0c;何谓正确&#xff1f;作为人&#xff0c;应该如何度过人生&#xff1f;这才是一切问题的根源。 有几个要点和认知比较深的地方谈一谈。 1、利他 类似于阳明心学&#xff0…...

Jmeter是用来做什么的?

JMeter是一个开源的Java应用&#xff0c;主要用于性能测试和功能测试。它最初由Apache软件基金会设计用于测试Web应用程序&#xff0c;但现在已经扩展到其他测试功能。JMeter的主要功能如下&#xff1a; 性能测试&#xff1a;性能测试是JMeter的核心功能&#xff0c;主要分为两…...

Docker基础教程

Docker基础教程 Docker简介 Docker基本操作 Docker应用 Docker自定义镜像 Docker compose 为什么使用DockerDocker简介安装DockerDocker的中央仓库Docker镜像操作Docker容器操作准备一个web项目创建MySQL容器创建Tomcat容器将项目部署到TomcatDocker数据卷DockerfileDock…...

Linux命令200例:who用于显示当前登录到系统的用户信息

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…...

HGDB-修改分区表名称及键值

瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台&#xff1a;N/A 版本&#xff1a;4.5.7 文档用途 使用存储过程拼接SQL&#xff0c;修改分区名称、分区键值、并重新加入主表&#xff0c;适用于分区表较多场景。 详细信息 说明&#xff1a;本文档为测试过程&#xff1…...

1分钟了解音频、语音数据和自然语言处理的关系

机器学习在日常场景中的应用 音频、语音数据和自然语言处理这三者正在不断促进人工智能技术的发展&#xff0c;人机交互也逐渐渗透进生活的每个角落。在各行各业包括零售业、银行、食品配送服务商&#xff09;的多样互动中&#xff0c;我们都能通过与某种形式的AI&#xff08;…...

线性代数的学习和整理20,关于向量/矩阵和正交相关,相似矩阵等

目录 1 什么是正交 1.1 正交相关名词 1.2 正交的定义 1.3 正交向量 1.4 正交基 1.5 正交矩阵的特点 1.6 正交矩阵的用处 1 什么是正交 1.1 正交相关名词 orthogonal set 正交向量组正交变换orthogonal matrix 正交矩阵orthogonal basis 正交基orthogonal decompositio…...

OpenCV之ellipse函数

ellipse函数用来在图片中绘制椭圆、扇形&#xff0c;有两个重载函数。 函数原型1&#xff1a; void cv::ellipse( InputOutputArray img,Point center,Size axes,double angle,double startAngle,double …...

git快速查看某个文件修改的所有commit

1. git blame file git blame 可以显示历史修改的每一行记录,有时候我们只想了解某个文件一共提交几次commit,只显示commit列表,这种方式显然不满足要求。 2.git log常规使用 (1)显示整个project的所有commit (2)显示某个文件的所有commit 这是git log不添加参数的常规…...

加强版python连接飞书通知——本地电脑PC端通过网页链接打开本地已安装软件(调用注册表形式,以漏洞扫描工具AppScan为例)

前言 如果你想要通过超链接来打开本地应用,那么你首先你需要将你的应用添入windows注册表中(这样网页就可以通过指定代号来调用程序),由于安全性的原因所以网页无法直接通过输入绝对路径来调用本地文件。 一、通过创建reg文件自动配置注册表 创建文本文档,使用记事本打开…...

Jmeter进阶使用指南-使用断言

Apache JMeter是一个流行的开源负载和性能测试工具。在JMeter中&#xff0c;断言&#xff08;Assertions&#xff09;是用来验证响应数据是否符合预期的一个重要组件。它是对请求响应的一种检查&#xff0c;如果响应不符合预期&#xff0c;那么断言会标记为失败。 以下是如何在…...

44、Flink之module模块介绍及使用示例和Flink SQL使用hive内置函数及自定义函数详细示例--网上有些说法好像是错误的

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...