首页 > 其他分享 >好题分享、心路历程(力扣1225)

好题分享、心路历程(力扣1225)

时间:2023-01-01 18:44:07浏览次数:42  
标签:1225 success number 力扣 fail 心路历程 date select row

【题目介绍】

该题为力扣1225,名为报告系统状态的连续日期。

【题型分类】

属于连续专题。

官网标为困难题。

【思路分享】

这里的连续属于时间连续,采用 row_number()、subdate() 技巧解题。

关键点:

1. 连续序列:需构造连续序列,以 row_number() 排序标号,记为 rnk。

2. 不连续序列:已有不连续时间列,以日期标号。

3. 连续序列与不连续序列差值:需构造序列差值,以 subdate() 做差;差值相同的为连续状态,以便后续分组;记为 grp。

题解:

with tmp1 as
(select *,
    row_number() over(order by fail_date) as rnk,
    subdate(fail_date,row_number() over(order by fail_date)) as grp
from Failed 
where fail_date between '2019-01-01' and '2019-12-31')

,tmp2 as
(select *,
    row_number() over(order by success_date) as rnk,
    subdate(success_date,row_number() over(order by success_date)) as grp
from Succeeded 
where success_date between '2019-01-01' and '2019-12-31')

,tmp3 as
((select distinct 'failed' as period_state,
    min(fail_date) as start_date,
    max(fail_date) as end_date
from tmp1
group by grp)
union all
(select distinct 'succeeded' as period_state,
    min(success_date) as start_date,
    max(success_date) as end_date
from tmp2
group by grp))

select *
from tmp3
order by start_date

-END

标签:1225,success,number,力扣,fail,心路历程,date,select,row
From: https://www.cnblogs.com/peitongshi/p/17018409.html

相关文章

  • 力扣---1262. 可被三整除的最大和
    给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和。示例1:输入:nums=[3,6,5,1,8]输出:18解释:选出数字3,6,1和8,它们的和是18(可被3整除的最大和)。示例2......
  • 力扣每日一题2023.1.1---2351. 第一个出现两次的字母
    给你一个由小写英文字母组成的字符串s,请你找出并返回第一个出现两次的字母。注意:   如果a的第二次出现比b的第二次出现在字符串中的位置更靠前,则认为字母......
  • 力扣每日一题2022.12.31---2037. 使每位学生都有座位的最少移动次数
    一个房间里有n 个座位和n 名学生,房间用一个数轴表示。给你一个长度为n 的数组 seats ,其中 seats[i]是第i 个座位的位置。同时给你一个长度为n 的数组 stude......
  • 力扣搜索插入位置
    目录题目解题思路代码本篇扯淡题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用......
  • 力扣二分查找
    题目给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,......
  • Python学习心路历程
    刚刚开始学Python也是零基础学这个,凭的完全是个人的兴趣,后面发现其实对学习有帮助的是视频,便疯狂看视频,然后看了慕课、黑马教育等视频,最后发现了一个比较好的视频资源:......
  • 力扣---88. 合并两个有序数组
    给你两个按非递减顺序排列的整数数组 nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按......
  • 力扣20 有效的括号
    题目:给定一个只包括'(',')','{','}','[',']' 的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合......
  • 力扣每日一题2022.12.28---1750. 删除字符串两端相同字符后的最短长度
    给你一个只包含字符'a','b' 和'c' 的字符串 s ,你可以执行下面这个操作(5个步骤)任意次:   选择字符串s 一个非空的前缀,这个前缀的所有字符都相同。   选择......
  • 力扣225 用队列实现栈
    题目:请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop和empty)。实现MyStack类:voidpush(intx)将元素x压入栈顶。......