SQLturning:定位连续值范围起点和终点

在上一篇blog说到,如何去优化查询连续值范围,没看过的朋友,上篇blog链接[在此]。(https://blog.csdn.net/weixin_42575078/article/details/135067645?spm=1001.2014.3001.5501)

那么今天来说说怎么将连续的数据合并,然后返回合并后的起止时间,实验数据构造代码看上篇blog即可,上篇blog链接[在此]。(https://blog.csdn.net/weixin_42575078/article/details/135067645?spm=1001.2014.3001.5501)
比如前四个项目合并后,起止时间就是1号和5号。

select * from v;

在这里插入图片描述
-----------------------------------------------接下来细分每个步骤写出这个SQL-----------------------------------------------
1、提取上一工程结束日期

select proj_id as 编号,proj_start as 开始时间,proj_end as 结束时间,lag(proj_end) over(order by proj_id) as 上一工程结束时间from v;

在这里插入图片描述
2、标记工程的连续状态

with x0 as(
select proj_id as 编号,proj_start as 开始时间,proj_end as 结束时间,lag(proj_end) over(order by proj_id) as 上一工程结束时间
from v)
select 编号,开始时间,结束时间,上一工程结束时间,case when 开始时间 = 上一工程结束时间 then 0 else 1 end as 连续状态
from x0;

在这里插入图片描述
3、将连续状态进行累加,得到分组依据

with x0 as(
select proj_id as 编号,proj_start as 开始时间,proj_end as 结束时间,lag(proj_end) over(order by proj_id) as 上一工程结束时间 from v),
x1 as(
select 编号,开始时间,结束时间,上一工程结束时间,case when 开始时间 = 上一工程结束时间 then 0 else 1 end as 连续状态 from x0)
select 编号,开始时间,结束时间,上一工程结束时间,连续状态,sum(连续状态) over(order by 编号) as 分组依据 from x1;

在这里插入图片描述
4、根据分组依据即可统计出5个连续分组,并求出起止时间

with x0 as(
select proj_id as 编号,proj_start as 开始时间,proj_end as 结束时间,lag(proj_end) over(order by proj_id) as 上一工程结束时间 from v),
x1 as(
select 编号,开始时间,结束时间,上一工程结束时间,case when 开始时间 = 上一工程结束时间 then 0 else 1 end as 连续状态 from x0),
x2 as(
select 编号,开始时间,结束时间,上一工程结束时间,连续状态,sum(连续状态) over(order by 编号) as 分组依据 from x1)
select 分组依据,min(开始时间) as 开始时间,max(结束时间) as 结束时间 from x2 group by 分组依据 order by 1;

在这里插入图片描述
今天的要点就是善用分析函数lag() over(),感兴趣的朋友可以去做下实验。

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

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

相关文章

SpringSecurity入门

前言 Spring Security是一个用于在Java应用程序中提供身份验证和授权功能的强大框架。它构建在Spring框架之上,为开发人员提供了一套灵活且全面的安全性服务,本篇将为大家带来Spring Security的详细介绍及入门 一.安全框架 在学习了解Spring Security之…

vue3动态验证码

首先下载了vant4组件库,element-plus组件库,配置了路由,及接口的封装 element-plus组件库可全局配置:快速开始 | Element Plus vant4组件库,我是按需引入:Vant 4 - A lightweight, customizable Vue UI l…

MeterSphere files 任意文件读取漏洞复现 (CVE-2023-25573)

0x01 产品简介 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容 JMeter、Selenium 等主流开源标准。 0x02 漏洞概述 MeterSphere /api/jmeter/download/files 路径文件存在文件读取漏洞,攻击者可通过该漏洞读取系统重要…

[总线仲裁]

目录 一. 集中仲裁方式1.1 链式查询方式1.2 计数器查询方式1.3 独立请求方式 二. 分布式仲裁方式 总线仲裁是为了解决多个设备争用总线这个问题 \quad 一. 集中仲裁方式 \quad 集中仲裁方式: 就像是霸道总裁来决定谁先获得总线控制权 分布仲裁方式: 商量着谁先获得总线控制权 …

C语言实现链式队列

在C语言中,链式队列是一种使用链表实现的队列,它具有以下特点: 链式队列不需要预先分配固定大小的存储空间,可以动态地分配内存以适应不同大小的队列。链式队列可以无限扩展,因此不会出现队列满的情况。链式队列的入队…

国产670亿参数的DeepSeek:超越Llama2,全面开源

模型概述 DeepSeek,一款国产大型语言模型(LLM),凭借其670亿参数的规模,正引领着人工智能领域的新浪潮。这款模型不仅在多项中英文公开评测榜单上超越了700亿参数的Llama 2,而且在推理、数学和编程能力方面…

JDK各个版本特性讲解-JDK16特性

JDK各个版本特性讲解-JDK16特性 一、JAVA16概述二、语法层面变化1.JEP 397:密封类(第二次预览)2.JEP 394:instanceof 的模式匹配3.JEP 395:记录4_JEP 390:基于值的类的警告 三、API层面变化1.JEP 338&#…

(备战2024)三天吃透Java面试八股文,面试通过率高达90%

什么样的求职者能够获得面试官的青睐?求职者需要准备哪些内容来面对形形色色的面试官?这两份资料是我在几十场面试中被面试官问到的问题,比其他复制粘贴的面试题强一百倍,堪称全网最强(我不太喜欢“全网最强”这样的字…

车辆违规开启远光灯检测系统:融合YOLO-MS改进YOLOv8

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着社会的不断发展和交通工具的普及,车辆违规行为成为了一个严重的问题。其中,车辆违规开启远光灯是一种常见的违规行为,给其…

贝蒂快扫雷~(C语言)

✨✨欢迎大家来到贝蒂大讲堂✨✨ ​​​​🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:贝蒂的游戏 贝蒂的主页:Betty‘s blog 引言: 扫雷相信大家小时候到玩过吧,那…

数据库故障Waiting for table metadata lock

场景:早上来发现一个程序,链接mysql数据库有点问题,随后排查,因为容器在k8s里面。所以尝试重启了pod没有效果 一、重启pod: 这里是几种在Kubernetes中重启Pod的方法: 删除Pod,利用Deployment重建 kubectl delete pod mypodDepl…

python爬虫进阶篇:利用Scrapy爬取同花顺个股行情并发送邮件通知

一、前言 上篇笔记我记录了scrapy的环境搭建和项目创建和第一次demo测试。本篇我们来结合现实场景利用scrapy给我们带来便利。 有炒股或者其它理财产品的朋友经常会关心每日的个股走势,如果结合爬虫进行实时通知自己,并根据自己预想的行情进行邮件通知&…

字符设备的注册与注销实现

一. 简介 前面文章学习了 编写字符设备驱动框架,并加载驱动模块。了解了 一组注册与注销设备的函数。 了解了字符设备号的组成以及如何分配。文章地址如下: 字符设备驱动框架的编写-CSDN博客 字符设备驱动模块的编译-CSDN博客 字符设备注册函数与注…

跟着我学Python进阶篇:01.试用Python完成一些简单问题

往期文章 跟着我学Python基础篇:01.初露端倪 跟着我学Python基础篇:02.数字与字符串编程 跟着我学Python基础篇:03.选择结构 跟着我学Python基础篇:04.循环 跟着我学Python基础篇:05.函数 跟着我学Python基础篇&#…

Nodejs 第三十章(防盗链)

防盗链(Hotlinking)是指在网页或其他网络资源中,通过直接链接到其他网站上的图片、视频或其他媒体文件,从而显示在自己的网页上。这种行为通常会给被链接的网站带来额外的带宽消耗和资源浪费,而且可能侵犯了原始网站的…

听一些大神说测试前途是IT里最差的,真的是这样吗?

一:行业经历 测试行业爬模滚打7年,从点点点的功能测试到现在成为高级测试,工资也翻了几倍;个人觉得,测试的前景并不差,只要自己肯努力;我刚出来的时候是在鹅厂做外包的功能测试,天天…

c++ = default 和 = delete

default 和 delete 在C中,声明自定义的类型之后,编译器会默认生成一些成员函数,这些函数被称为默认函数。其中包括: (1)(默认)构造函数 (2)拷贝&#xff08…

ROS通信频率变慢、低于设定值的解决方法

1 问题 ROS gazebo以100Hz的频率发消息,触发A节点的回调函数,进而回调函数发送新消息到B节点。理论上新消息的频率也应该是100Hz。但是用rqt_topic查看发现,频率只有30多Hz。 2 解决 在初始化Subscriber的时候加上ros::TransportHints().…

【halcon深度学习之那些封装好的库函数】determine_dl_model_detection_param

determine_dl_model_detection_param 目标检测的数据准备过程中的有一个库函数determine_dl_model_detection_param “determine_dl_model_detection_param” 直译为 “确定深度学习模型检测参数”。 这个过程会自动针对给定数据集估算模型的某些高级参数,强烈建议…