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