LeetCode MySQL 1225. 报告系统状态的连续日期(date_sub + over)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode MySQL 1225. 报告系统状态的连续日期(date_sub + over)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
Table: Failed
+--------------+---------+ | Column Name | Type | +--------------+---------+ | fail_date | date | +--------------+---------+ 該表主鍵為 fail_date。 該表包含失敗任務的天數.Table: Succeeded
+--------------+---------+ | Column Name | Type | +--------------+---------+ | success_date | date | +--------------+---------+ 該表主鍵為 success_date。 該表包含成功任務的天數.系統 每天 運行一個任務。每個任務都獨立于先前的任務。
任務的狀態可以是失敗或是成功。
編寫一個 SQL 查詢 2019-01-01 到 2019-12-31 期間任務連續同狀態 period_state 的起止日期(start_date 和 end_date)。
即如果任務失敗了,就是失敗狀態的起止日期,如果任務成功了,就是成功狀態的起止日期。
最后結果按照起始日期 start_date 排序
查詢結果樣例如下所示:
Failed table: +-------------------+ | fail_date | +-------------------+ | 2018-12-28 | | 2018-12-29 | | 2019-01-04 | | 2019-01-05 | +-------------------+Succeeded table: +-------------------+ | success_date | +-------------------+ | 2018-12-30 | | 2018-12-31 | | 2019-01-01 | | 2019-01-02 | | 2019-01-03 | | 2019-01-06 | +-------------------+Result table: +--------------+--------------+--------------+ | period_state | start_date | end_date | +--------------+--------------+--------------+ | succeeded | 2019-01-01 | 2019-01-03 | | failed | 2019-01-04 | 2019-01-05 | | succeeded | 2019-01-06 | 2019-01-06 | +--------------+--------------+--------------+結果忽略了 2018 年的記錄,因為我們只關心從 2019-01-01 到 2019-12-31 的記錄 從 2019-01-01 到 2019-01-03 所有任務成功,系統狀態為 "succeeded"。 從 2019-01-04 到 2019-01-05 所有任務失敗,系統狀態為 "failed"。 從 2019-01-06 到 2019-01-06 所有任務成功,系統狀態為 "succeeded"。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/report-contiguous-dates
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 給數據編號,然后用 日期跟編號做差 當作分組標準,使用窗口函數
- 最后合并 union all
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode MySQL 1225. 报告系统状态的连续日期(date_sub + over)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 317. 离建筑物最近
- 下一篇: LeetCode 727. 最小窗口子序