leetcode 1225 报告系统状态的连续日期(postgresql)

需求

系统 每天 运行一个任务。每个任务都独立于先前的任务。任务的状态可以是失败或是成功。

编写一个 SQL 查询 2019-01-01 到 2019-12-31 期间任务连续同状态 period_state 的起止日期(start_date 和 end_date)。即如果任务失败了,就是失败状态的起止日期,如果任务成功了,就是成功状态的起止日期。

最后结果按照起始日期 start_date 排序

输入

在这里插入图片描述

分析

– 对成功表,使用rank函数对其排序,并筛选出2019年的数据
– 窗口函数排序:
– row_number:1,2,3,4
– rank:1,2,2,4
– dense_rank:1,2,2,3
2.
– 拼接字符串,因为一个是date类型,一个是int类型,不能直接相减,这里将int类型拼接字符串,
– 再将其转换为interval类型,再将两者相减。得到 2018-12-31 00:00:00.000000
3.
– 对上一步的结果,对相减后的结果分组,因为时间是递增的,排序也是递增的。
– 如果时间是连续的,那么二者相减,得到的时间就是相同的,
– 使用这个时间进行分组,再求出组内最小值作为开始时间,最大值作为结束时间
4.
– 对失败表进行上面相同的操作
5.
– 合并两次查询的结果,并按照开始时间排序

输出

with t1 as (
-- 对成功表,使用rank函数对其排序,并筛选出2019年的数据
-- 窗口函数排序:-- row_number:1,2,3,4-- rank:1,2,2,4-- dense_rank:1,2,2,3
select * ,rank() over (order by success_date) as rn1
from succeeded
where success_date>='2019-01-01' and success_date<='2019-12-31'
),t2 as (
-- 拼接字符串,因为一个是date类型,一个是int类型,不能直接相减,这里将int类型拼接字符串,-- 再将其转换为interval类型,再将两者相减。得到 2018-12-31 00:00:00.000000
select *,success_date-(rn1||'day')::interval as rn2
from t1
),t3 as (
-- 对上一步的结果,对相减后的结果分组,因为时间是递增的,排序也是递增的。-- 如果时间是连续的,那么二者相减,得到的时间就是相同的,-- 使用这个时间进行分组,再求出组内最小值作为开始时间,最大值作为结束时间
select 'succeeded' as period_state,min(success_date) as start_date,max(success_date) as end_date
from t2
group by rn2
),t4 as (
-- 对失败表进行上面相同的操作
select *,fail_date-((rank() over (order by fail_date))||'day')::interval as rn3
from failed
where fail_date>='2019-01-01' and fail_date<='2019-12-31'
)
-- 合并两次查询的结果,并按照开始时间排序
select 'failed' as period_state,min(fail_date) as start_date,max(fail_date) as end_date
from t4
group by rn3
union all
select * from t3
order by start_date
;

在这里插入图片描述

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

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

相关文章

Linux网络之策略路由

一、前言 日常维护工作中,有时候会遇到单台主机多张网卡的情况,尤其云上环境,云主机多张网卡是一种常见网络配置场景,那如何让多网卡正常工作呢,本期基于此北京,回顾下Linux策略路由的相关知识; 策略路由PBR:(Policy-Based-Route),也称为源路由,它是一种比基于目标网…

Python 造数据神器Faker

大家好&#xff0c;在编写代码过程中&#xff0c;我们经常需要一些假数据来进行测试或者演示。手动创建这些数据不仅耗时&#xff0c;而且容易出错。幸运的是&#xff0c;Python有一个非常有用的库叫做Faker&#xff0c;它可以生成各种类型的假数据&#xff0c;从名字、地址到公…

教你用U-Mail搭建一个企业邮箱系统

随着互联网的发展&#xff0c;电子邮件已成为企业内部沟通和外部商务的重要工具。对于企业而言&#xff0c;拥有一个安全、稳定、高效的企业邮箱系统至关重要。U-Mail作为一款备受好评的企业邮箱系统&#xff0c;本文将详细介绍如何使用U-Mail从零开始搭建一个企业邮箱系统。 一…

ganglia的安装使用

1.集群内分别安装epel-release依赖&#xff0c;更新yum源 sudo yum -y install epel-release 2&#xff0e;各节点上分别安装gmond sudo yum -y install ganglia-gmond 3.监控节点上安装gmetad和web(这里安装在node1上) sudo yum -y install ganglia-gmetad sudo yum -y insta…

Vue基础(1)数据绑定

一. 文本插值 普通文本可以使用双大括号 {{ }} &#xff0c;要想插入 HTML&#xff0c;需要使用 v-html 指令。 <template><h1>Message: {{ state.msg }}</h1><p>{{ state.count 1 }}</p><p>{{ state.rawHtml }}</p><p v-html…

消息队列实战应用

适用场景 耗时长&#xff0c;非核心业务&#xff0c;生产者不会用到消息处理结果的情况下&#xff0c;可以将消息交给异步服务去缓存与消费 部署MQ服务 version: "3.0" services:rabbitmq:container_name: rabbitmq-15672-1image: rabbitmq:3-managementports:- &…

关于新配置的adb,设备管理器找不到此设备问题

上面页面中一开始没有找到此android设备&#xff0c; 可能是因为我重新配置的adb和设备驱动&#xff0c; 只把adb配置了环境变量&#xff0c;驱动没有更新到电脑中&#xff0c; 点击添加驱动&#xff0c; 选择路径&#xff0c;我安装时都放在了SDK下面&#xff0c;可以尝试…

Python操作MySQL

文章导读 阅读本文需要一定的Python基础和MySQL基础&#xff0c;如果阅读过程中感到吃力&#xff0c;可以阅读我的Python入门篇学习记录和MySQL学习记录填补知识漏洞&#xff0c;本文使用VS Code操作pymysql驱动&#xff0c;使用navicat查看数据库&#xff0c;实操偏多&#xf…

Parasoft C++Test软件静态分析操作指南_软件质量度量

系列文章目录 Parasoft CTest软件安装指南 Parasoft CTest软件静态分析操作指南_编码规范/标准检查 Parasoft CTest软件静态分析操作指南_软件质量度量 Parasoft CTest软件静态分析_自动提取静态分析数据生成文档 Parasoft CTest软件单元测试_操作指南 Parasoft CTest软件单元…

8个实用网站和软件,收藏起来一定不后悔~

整理了8个日常生活中经常能用得到的网站和软件&#xff0c;收藏起来一定不会后悔~ 1.ZLibrary zh.zlibrary-be.se/这个网站收录了超千万的书籍和文章资源&#xff0c;国内外的各种电子书资源都可以在这里搜索&#xff0c;98%以上都可以在网站内找到&#xff0c;并且支持免费下…

错误0xc0000022的3种解决方法

程序无法正常启动&#xff0c;报错代码为0xc0000022。当你的电脑运行程序出现这种情形&#xff0c;多半是由于系统的权限问题引起的。 原因一&#xff1a;应用程序的访问权限不足 有时候&#xff0c;直接打开文件时会遇到“0xc0000022” 错误&#xff0c;但是右键“以管理员身份…

力扣刷题---409. 最长回文串【简单】

题目描述 给定一个包含大写字母和小写字母的字符串 s &#xff0c;返回 通过这些字母构造成的 最长的回文串 。 在构造过程中&#xff0c;请注意 区分大小写 。比如 “Aa” 不能当做一个回文字符串。 示例 1: 输入:s “abccccdd” 输出:7 解释: 我们可以构造的最长的回文串…

抖店一件代发,从0到1操作全流程

我是王路飞。 先说明一点&#xff0c;新手不需要纠结抖店一件代发&#xff08;即无货源模式&#xff09;还能不能做的问题。 无货源只是前期帮助新手阶段的你进入到这个市场里来的一种方式&#xff0c;不是你长期做店的思路。 入门之后&#xff0c;基本就转型为有货源去玩了…

光照模型技术在AI去衣中的重要作用

引言&#xff1a; 在数字图像处理和计算机视觉领域&#xff0c;AI去衣技术正逐渐成为研究和应用的热点。这项技术依赖于人工智能算法&#xff0c;尤其是深度学习模型&#xff0c;来识别和处理图像或视频中的衣物。在这个过程中&#xff0c;光照模型技术扮演着至关重要的角色。本…

【话题】你眼中的IT行业现状与未来趋势

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 引言一、IT行业的现状1.1 云计算与大数据1.2 人工智能与机器学习1.3 物联网与5G通信1.4 区块链技术 二、IT行业未来发展趋势2.1 边缘计算与智能设备2.2 深度学习与自然语…

K8S中YAML案例

目录 案例&#xff1a;自主式创建service并关联上面的pod 案例&#xff1a;部署redis 案例&#xff1a;部署myapp 案例&#xff1a;部署MySQL数据库 总结 1.K8S集群中访问流向 K8S集群外部&#xff1a;客户端——nodeIP&#xff1a;nodeport——通过target port——podIP…

数据可视化第十天(爬虫爬取某瓣星际穿越电影评论,并且用词云图找出关键词)

开头提醒 本次爬取的是用户评论&#xff0c;只供学习使用&#xff0c;不会进行数据的传播。希望大家合法利用爬虫。 获得数据 #总程序 import requests from fake_useragent import UserAgent import timefuUserAgent()headers{User-Agent:fu.random }page_listrange(0,10) …

概率论统计——大数定律

大数定律 弱大数定律&#xff08;辛钦大数定律&#xff09; 利用切比雪夫不等式&#xff0c;证明弱大数定律 应用 伯努利大数定理&#xff0c;&#xff08;辛钦大数定理的推论&#xff09; 证明伯努利大数定理 注意&#xff1a;这里将二项分布转化成0,1分布来表示&#xff0c;…

【C++】牛客——美团 奇数位丢弃

✨题目链接&#xff1a; MT8 奇数位丢弃 ✨题目描述 对于一个由 0..n 的所有数按升序组成的序列&#xff0c;我们要进行一些筛选&#xff0c;每次我们丢弃去当前所有数字中第奇数位个的数。重复这一过程直到最后剩下一个数。请求出最后剩下的数字。 数据范围&#xff1a; 1≤…