Hive SQL必刷练习题:日期交叉问题(两种思路)

在这里插入图片描述

思路一:

首先想到的是借助炸裂函数,一行变成多行,就可以进行去重操作,然后再统计日期。

用到炸裂函数,就首先需要可以拿到起始和终止日期差大小的数组,然后再炸裂

那这个指定长度数组怎么获取呢?

​ 先通过datediff + 1,就可以知道我们需要的数组是多大的

​ 通过spilt( repeat(“,” , 4) ,’ , ') 这样就创建了一个有5个空字符串的数组,数组长度是5

​ 所以就是spilt( repeat(“,” , diff) , ’,’ ) 【注意这个diff是不需要加1的,因为创建长度是五的数组,这个diff只要是4就够了】

​ 炸完之后是下面这样,然后再进行一次row_number,进行排序,最后把排序的序号给start_date加上就行

在这里插入图片描述

​ 或者直接不用explode(arr),直接用posexplode(arr) tmp as pos,item

​ 这就不用row_number,可以直接加上这个pos了

思路二:

(1, ‘oppo’, ‘2021-06-05’, ‘2021-06-09’),
(2, ‘oppo’, ‘2021-06-11’, ‘2021-06-21’),
(3, ‘vivo’, ‘2021-06-05’, ‘2021-06-15’),
(4, ‘vivo’, ‘2021-06-09’, ‘2021-06-21’),
(5, ‘redmi’, ‘2021-06-05’, ‘2021-06-21’), 1974-01-01
(6, ‘redmi’, ‘2021-06-09’, ‘2021-06-15’), 2021-06-21
(7, ‘redmi’, ‘2021-06-17’, ‘2021-06-26’), 2021-06-26
(8, ‘huawei’, ‘2021-06-05’, ‘2021-06-26’),
(9, ‘huawei’, ‘2021-06-09’, ‘2021-06-15’),
(10, ‘huawei’, ‘2021-06-17’, ‘2021-06-21’);

但是也可以用一个别的思路:相当于就是通过更新start_date,来解决可能的时间交叉或者包含关系

同一个品牌,到当前行为止,去用到当前行之前的最大end_date日期,去比对当前的start_date如果大于最大end_date,那就说明没有交集,这一行的start_date就是原本的这个。否则start_date就是****date_add(max_end_date,1)

最后end - start 最后如果是正数就留下,负数就说明是算过

在这里插入图片描述

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

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

相关文章

sentry-cli - error: Failed to load .sentryclirc file from project path

Xcode 15.2 warning sentry-cli - error: Failed to load .sentryclirc file from project path (/Users/zhuhongwei/Desktop/pandabill/.sentryclirc)推荐一下刚上线的 App 熊猫小账本,里面有用到这篇博客讲的内容 熊猫小账本 一个简洁的记账 App,用于…

文件IO(代码案例: 文件复制, 指定目录查找文件, 指定目录查找内容)

文件复制 进行普通文件的复制 使用操作字节流的对象操作文件 // 文件复制 public class Main {public static void main(String[] args) throws IOException {// 输入两个路径, 源路径, 目的路径Scanner scanner new Scanner(System.in);System.out.println("请输入拷贝文…

将OpenCV与gcc和CMake结合使用

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV4.9.0开源计算机视觉库在 Linux 中安装 下一篇: 引言: 近年来,计算机视觉技术在图像处理、目标检测和机器人等方面得到了广泛的应用…

Centos7部署使用TELEMAC-MASCARET

Background TELEMAC-MASCARET是一款研究水动力学和水文学领域的高性能数值仿真开源软件。MASCARET(1980)和 TELEMAC(1987)最初是由法电集团所属的法国国立水利与环境实验室开发,随后整合为TELEMAC-MASCARET并由法英德三…

简单了解多线程

并发和并行 并发: 在同一时刻,多个指令在单一CPU上交替指向 并行:在同一时刻,多个指令在多个CPU上同时执行 2核4线程,4核8线程,8核16线程,16核32线程 基础实现线程的方式 Thread :继承类 &…

UE5.3 StateTree使用实践

近期浏览UE的CitySample(黑客帝国Demo),发现有不少逻辑用到了StateTree学习一下,StateTree是多层状态机实现,以组件的形式直接挂载在蓝图中运行。 与平时常见的一些FSM库不同,StateTree并不会返回给外界当…

软件工程-第9章 软件工程项目管理概述

9.1 软件工程管理活动 9.2 软件规模、成本和进度估算 9.3 能力成熟度模型CMM 9.4 ISO 9000系列标准简介 9.5 CMM与ISO 9000系列标准的比较 9.6 本章小结

【MySQL】学习和总结使用列子查询查询员工工资信息

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-5odctDvQ0AHJJc1C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

[保姆级教程]Windows安装MongoDB教程

文章目录 MongoDB安装包下载1.点击进入mongodb官网2.点击MongoDB Community Edition(社区版),进入下图界面3.选择版本4.下载5.安装6.勾选同意协议,点击“Next"7.选择自定义安装8.点击“Next"9.修改到合适的地址10.点击i…

Java SE入门及基础(44)

目录 I / O流(上) 1. 什么是I / O流 过程分析 I / O的来源 Java 中的 I / O流 2. 字节流 OutputStream 常用方法 文件输出流 FileOutputStream 构造方法 示例 InputStream 常用方法 文件输入流 FileInputStream 构造方法 示例 综合练习 字节流应用场景 Java SE文…

FREERTOS空闲任务和低功耗

空闲任务 空闲任务是 FreeRTOS 必不可少的一个任务,其他 RTOS 类系统也有空闲任务,比如uC/OS。看名字就知道,空闲任务是处理器空闲的时候去运行的一个任务,当系统中没有其他就绪任务的时候空闲任务就会开始运行,空闲任…

腾讯春招后端一面(算法篇)

前言: 哈喽大家好,前段时间在小红书和牛客上发了面试的经验贴,很多同学留言问算法的具体解法,今天就详细写个帖子回复大家。 因为csdn是写的比较详细,所以更新比较慢,大家见谅~~ 就题目而言,…

Cache缓存:HTTP缓存策略解析

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

基于CNN多阶段图像超分+去噪(超级简单版)

这是之前的一项工作,非常简单,简单的复现了两个算法,然后把它们串起来了。 可执行的程序链接:CSDN; Github 我们分成两部分进行讲解: 1. 图像去噪 1.1 基本思路 图像的去噪工作基于很普通的CNN去噪,效…

Django分页器

Django分页器 分页器前瞻之url urls.py不需要做修改 urlpatterns [path(test/, views.test,nametest), ]假设此时在原有的路径http://127.0.0.1:8000/app01/test后面添加/?page2 然后再后端获取到page def test(request):page request.GET.get(page)print(page) # 2retu…

【二分查找】算法例题

目录 十八、二分查找 114. 搜索插入位置 ① √- 115. 搜索二维矩阵 ② 116. 寻找峰值 ② √- 117. 搜索旋转排序数组 ② 118. 在排序数组中查找元素的第一个和最后一个位置 ② √ 119. 寻找寻钻排序数组中的最小值 ② 120. 寻找两个正序数组的中位数 ③ 136. 直线上最多…

在react中使用tailwindcss

安装tailwind css npm i -D tailwindcssnpm:tailwindcss/postcss7-compat postcss^7 autoprefixer^9安装 CRACO 由于 Create React App 不能让您覆盖原生的 PostCSS 配置,所以我们还需要安装 CRACO 才能配置 Tailwind。 npm install craco/craco配置CRACO 在项目根…

深入挖掘C语言之——联合

目录 联合的定义 联合的特点 联合的应用场景 在C语言中,联合(Union)是一种特殊的数据结构,它允许在同一内存地址存储不同类型的数据。与结构体(Struct)不同的是,联合中的所有成员共享同一块内…

VsCode免密登录

创建本地密匙 按下WinR输入cmd,输入 ssh-keygen -t rsa然后连续回车直到结束 找到Your public key has been saved in C:\Users\Administrator/.ssh/id_rsa.pub,每个人都不一样找到密匙所在地 打开id_rsa.pub这个文件,可以用记事本打开&am…

大模型第一讲笔记

目录 1、人工智能基础概念全景介绍... 2 1.1 人工智能全景图... 2 1.2 人工智能历史... 2 1.3 人工智能——机器学习... 3 监督学习、非监督学习、强化学习、机器学习之间的关系... 3 监督学习... 4 无监督学习... 5 强化学习... 5 深度学习... 6 2、语言模型的发展及…