Mysql 获取上月和当月登录的用户
我只有两列,一列是用户ID,另一列是他登录的时间。我需要的是比较每个用户是否在上个月登录,以及是否在本月再次登录Mysql 获取上月和当月登录的用户,mysql,sql,Mysql,Sql,我只有两列,一列是用户ID,另一列是他登录的时间。我需要的是比较每个用户是否在上个月登录,以及是否在本月再次登录 UserId LoginDatetime 207 1/25/2021 21:04 207 2/8/2021 14:59 207 2/8/2021 14:59 207 2/16/2021 19:54 209 11/12/2018 18:33 我是mySQL的新手,所以我不知道如何开始这个 理想情况下,我希望看到的结果是一个具有唯一用户的表,以
UserId LoginDatetime
207 1/25/2021 21:04
207 2/8/2021 14:59
207 2/8/2021 14:59
207 2/16/2021 19:54
209 11/12/2018 18:33
我是mySQL的新手,所以我不知道如何开始这个
理想情况下,我希望看到的结果是一个具有唯一用户的表,以及一列显示用户是否登录这两个月的结果:
UserId Logged in both months
207 No
209 No
谢谢你的关注 你可以用这个
对于MySQL-
Select distinct userId,
CASE
WHEN EXISTS (Select 1 from UserLogin ul1 where ul1.userId = ul.userId and
DATE_FORMAT(ul1.LoginDatetime,'%m%y') = DATE_FORMAT(SYSDATE(),'%m%y')) AND
EXISTS (Select 1 from UserLogin ul1 where ul1.userId = ul.userId and
DATE_FORMAT(ul1.LoginDatetime,'%m%y') = DATE_FORMAT(DATE_ADD(SYSDATE(), INTERVAL -1 MONTH),'%m%y'))
THEN 'Y'
ELSE 'N'
END
AS LoggedInBothMonths
from UserLogin ul
甲骨文-
Select distinct userId,
CASE
WHEN EXISTS (Select 1 from UserLogin ul1 where ul1.userId = ul.userId and
to_char(ul1.LoginDatetime,'MMYY') = to_char(SYSDATE,'MMYY')) AND
EXISTS (Select 1 from UserLogin ul1 where ul1.userId = ul.userId and
to_char(ul1.LoginDatetime,'MMYY') = to_char(add_months(sysdate, -1),'MMYY'))
THEN 'Y'
ELSE 'N'
END
AS LoggedInBothMonths
from UserLogin ul
您将使用聚合和条件逻辑:
select userid,
(case when sum(last_day(LoginDatetime) = last_day(curdate())) and
sum(last_day(LoginDatetime) = last_day(curdate()) - interval 1 month)
then 'yes' else 'no'
end)
from t
group by userid;
COUNTDISTINCT MonthLoginDatime=2PS。显示的datatime格式对MySQL不合法。请看这个问题被标记为MySQL,添加月数在MySQL中不是一个函数。更新了我对MySQL的回答,感谢您指出