Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 获取上月和当月登录的用户_Mysql_Sql - Fatal编程技术网

Mysql 获取上月和当月登录的用户

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的新手,所以我不知道如何开始这个 理想情况下,我希望看到的结果是一个具有唯一用户的表,以

我只有两列,一列是用户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  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的回答,感谢您指出