LC 1369. Get the Second Most Recent Activity

link

Solution1:

自定义变量,union all

# Write your MySQL query statement below

select username,activity,startDate,endDate from 
(
select t1.*, @rk:=if(@name=t1.username,@rk+1,1) as rank,
    @name:=username as name 
 from 
(
select * from UserActivity u order by username, startDate DESC
)t1, (select @rk:=0, @name:=null) p
)t2 where rank=2
union all
select username, activity, startDate, endDate from UserActivity group by username having count(startDate)=1

Solution2:

先排除掉count>1 且最近的那一项, 再找最近的一项。

# Write your MySQL query statement below

select u.* from UserActivity u join
(
select username, max(startDate) as second from UserActivity where (username,startDate)
not in
    (select username,max(startDate) as mx from UserActivity group by username having count(username)>1
    )
group by username    
)t1 on u.username=t1.username and u.startDate=t1.second
原文地址:https://www.cnblogs.com/FEIIEF/p/12650151.html