LeetCode MySQL 1369. 获取最近第二次的活动(over窗口函数)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode MySQL 1369. 获取最近第二次的活动(over窗口函数)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
表: UserActivity
+---------------+---------+ | Column Name | Type | +---------------+---------+ | username | varchar | | activity | varchar | | startDate | Date | | endDate | Date | +---------------+---------+ 該表不包含主鍵 該表包含每個用戶在一段時間內(nèi)進(jìn)行的活動的信息 名為 username 的用戶在 startDate 到 endDate 日內(nèi)有一次活動寫一條SQL查詢展示每一位用戶 最近第二次 的活動(倒數(shù)第二次)
如果用戶僅有一次活動,返回該活動
一個用戶不能同時進(jìn)行超過一項活動,以 任意 順序返回結(jié)果
下面是查詢結(jié)果格式的例子:
UserActivity 表: +------------+--------------+-------------+-------------+ | username | activity | startDate | endDate | +------------+--------------+-------------+-------------+ | Alice | Travel | 2020-02-12 | 2020-02-20 | | Alice | Dancing | 2020-02-21 | 2020-02-23 | | Alice | Travel | 2020-02-24 | 2020-02-28 | | Bob | Travel | 2020-02-11 | 2020-02-18 | +------------+--------------+-------------+-------------+Result 表: +------------+--------------+-------------+-------------+ | username | activity | startDate | endDate | +------------+--------------+-------------+-------------+ | Alice | Dancing | 2020-02-21 | 2020-02-23 | | Bob | Travel | 2020-02-11 | 2020-02-18 | +------------+--------------+-------------+-------------+Alice 最近第二次的活動是從 2020-02-24 到 2020-02-28 的旅行, 在此之前的 2020-02-21 到 2020-02-23 她進(jìn)行了舞蹈 Bob 只有一條記錄,我們就取這條記錄來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/get-the-second-most-recent-activity
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
- 先選出只有一次活動的人的記錄
- 窗口函數(shù)選出每個人倒數(shù)第二次的活動
- 最后合并
更簡潔的寫法
# Write your MySQL query statement below select username, activity, startDate, endDate from (select *,rank() over (partition by username order by startDate desc) rnk,count(*) over (partition by username) cntfrom UserActivity ) t where cnt = 1 or rnk = 2我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關(guān)注我的公眾號(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode MySQL 1369. 获取最近第二次的活动(over窗口函数)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1738. 找出第 K
- 下一篇: LeetCode 1656. 设计有序流