<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Calculate number of logins over days and select records with at least 1 login per month? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/749011#M235311</link>
    <description>Well, we haven’t seen your program but I tested the proc sort and merge with the datasets in this thread and got the desired results you described. can help better if we see code or you post an example of output that isn’t what you expected.&lt;BR /&gt;</description>
    <pubDate>Sat, 19 Jun 2021 01:21:54 GMT</pubDate>
    <dc:creator>tarheel13</dc:creator>
    <dc:date>2021-06-19T01:21:54Z</dc:date>
    <item>
      <title>Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748595#M235097</link>
      <description>&lt;P&gt;I have a table where every row is a unique user, and I have column containing their total logins and their time as an active user in days.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to create a new table that contains only users who have had at least 1 login every 30 days.&amp;nbsp;&lt;/P&gt;&lt;P&gt;How do I go about this?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's what I'm thinking: ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;logins_days = (logins/(days/30));&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;create table want AS&lt;/P&gt;&lt;P&gt;select&amp;nbsp; *&amp;nbsp;&lt;/P&gt;&lt;P&gt;from have&lt;/P&gt;&lt;P&gt;where logins_days &amp;gt;= 0.03333;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;logins&lt;/TD&gt;&lt;TD&gt;days&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1047&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;262&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;1095&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;485&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;16&lt;/TD&gt;&lt;TD&gt;546&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1148&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;532&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;378&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;908&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;17&lt;/TD&gt;&lt;TD&gt;1153&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;871&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;271&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;745&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;304&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;875&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;1121&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;TD&gt;412&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;309&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19&lt;/TD&gt;&lt;TD&gt;138&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Thu, 17 Jun 2021 02:13:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748595#M235097</guid>
      <dc:creator>PharmlyDoc</dc:creator>
      <dc:date>2021-06-17T02:13:23Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748600#M235101</link>
      <description>&lt;P&gt;Strange logic. I would question it.&lt;/P&gt;
&lt;P&gt;Since you have not posted data in usable form or showed the expected result, i can only post untested code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  if not missing(Logins);
  if Days / Logins &amp;lt;= 30;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 17 Jun 2021 04:32:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748600#M235101</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2021-06-17T04:32:12Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748601#M235102</link>
      <description>&lt;P&gt;The data you've posted only allows to determine the average login gaps. It won't tell you if someone logged in for the first 100 days but then was inactive for the next 100 days.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  login_avg_less30days_flg = days/logins&amp;lt;=30;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 17 Jun 2021 04:33:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748601#M235102</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2021-06-17T04:33:11Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748757#M235180</link>
      <description>&lt;P&gt;Okay, I see your point.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need help thinking this out. I have a table of users and their dates that they logged in to their online accounts from 2018-2020 – so a user can have more than one observation in the table.&amp;nbsp;&lt;/P&gt;&lt;P&gt;How do I calculate/see the number of users who logged in at least once per month for 4 consecutive months from 1/1/2019 through 12/31/2020?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data records;
input @1 userid $7.
      @8 login_datetime ANYDTDTM21.;
format login_datetime DATETIME21.;
datalines;
Z100003	10/29/2020:04:47:00PM
Z100001	10/30/2020:04:47:00PM
Z100001	10/31/2020:04:47:00PM
Z100009	11/01/2020:04:47:00PM
Z100005	11/02/2020:04:47:00PM
Z100010	11/03/2020:04:47:00PM
Z100012	11/04/2020:04:47:00PM
Z100003	11/05/2020:04:47:00PM
Z100008	11/06/2020:04:47:00PM
Z100013	11/07/2020:04:47:00PM
Z100006	11/08/2020:04:47:00PM
Z100013	11/09/2020:04:47:00PM
Z100011	11/10/2020:04:47:00PM
Z100006	11/11/2020:04:47:00PM
Z100006	11/12/2020:04:47:00PM
Z100013	11/13/2020:04:47:00PM
Z100007	11/14/2020:04:47:00PM
Z100010	11/15/2020:04:47:00PM
Z100008	11/16/2020:04:47:00PM
Z100003	11/17/2020:04:47:00PM
Z100007	11/18/2020:04:47:00PM
Z100010	11/19/2020:04:47:00PM
Z100012	11/20/2020:04:47:00PM
Z100001	11/21/2020:04:47:00PM
Z100003	11/22/2020:04:47:00PM
Z100003	11/23/2020:04:47:00PM
Z100010	11/24/2020:04:47:00PM
Z100010	11/25/2020:04:47:00PM
Z100004	11/26/2020:04:47:00PM
Z100009	11/27/2020:04:47:00PM
Z100005	11/28/2020:04:47:00PM
Z100011	11/29/2020:04:47:00PM
Z100000	11/30/2020:04:47:00PM
Z100013	12/01/2020:04:47:00PM
Z100001	12/02/2020:04:47:00PM
Z100001	12/03/2020:04:47:00PM
Z100002	12/04/2020:04:47:00PM
Z100012	12/05/2020:04:47:00PM
Z100013	12/06/2020:04:47:00PM
Z100006	12/07/2020:04:47:00PM
Z100000	12/08/2020:04:47:00PM
Z100010	12/09/2020:04:47:00PM
Z100002	12/10/2020:04:47:00PM
Z100011	03/12/2018:08:04:00AM
Z100013	03/12/2019:08:17:00AM
Z100006	03/13/2019:08:17:00AM
Z100003	03/14/2019:08:17:00AM
Z100006	03/15/2019:08:17:00AM
Z100007	03/16/2019:08:17:00AM
Z100008	03/17/2019:08:17:00AM
Z100004	03/18/2019:08:17:00AM
Z100006	03/19/2019:08:17:00AM
Z100009	03/20/2019:08:17:00AM
Z100011	03/21/2019:08:17:00AM
Z100011	03/22/2019:08:17:00AM
Z100013	03/23/2019:08:17:00AM
Z100008	03/24/2019:08:17:00AM
Z100009	03/25/2019:08:17:00AM
Z100005	03/26/2019:08:17:00AM
Z100008	03/27/2019:08:17:00AM
Z100010	03/28/2019:08:17:00AM
Z100004	03/29/2019:08:17:00AM
Z100009	03/30/2019:08:17:00AM
Z100012	03/31/2019:08:17:00AM
Z100002	04/01/2019:08:17:00AM
Z100011	04/02/2019:08:17:00AM
Z100006	04/03/2019:08:17:00AM
Z100002	04/04/2019:08:17:00AM
Z100002	04/05/2019:08:17:00AM
Z100005	04/06/2019:08:17:00AM
Z100008	04/07/2019:08:17:00AM
Z100001	04/08/2019:08:17:00AM
Z100001	04/09/2019:08:17:00AM
Z100003	04/10/2019:08:17:00AM
Z100005	04/11/2019:08:17:00AM
Z100004	04/12/2019:08:17:00AM
Z100004	04/13/2019:08:17:00AM
Z100004	04/14/2019:08:17:00AM
Z100004	04/15/2019:08:17:00AM
Z100000	04/16/2019:08:17:00AM
Z100002	04/17/2019:08:17:00AM
Z100007	04/18/2019:08:17:00AM
Z100011	04/19/2019:08:17:00AM
Z100002	04/20/2019:08:17:00AM
Z100004	04/21/2019:08:17:00AM
Z100001	04/22/2019:08:17:00AM
Z100011	04/23/2019:08:17:00AM
Z100006	04/24/2019:08:17:00AM
Z100010	04/25/2019:08:17:00AM
Z100001	04/26/2019:08:17:00AM
Z100007	04/27/2019:08:17:00AM
Z100002	04/28/2019:08:17:00AM
Z100000	04/29/2019:08:17:00AM
Z100011	04/30/2019:08:17:00AM
Z100012	05/01/2019:08:17:00AM
Z100012	05/02/2019:08:17:00AM
Z100003	05/03/2019:08:17:00AM
Z100004	05/04/2019:08:17:00AM
Z100003	05/05/2019:08:17:00AM
Z100009	05/06/2019:08:17:00AM
Z100002	05/07/2019:08:17:00AM
Z100010	05/08/2019:08:17:00AM
Z100005	05/09/2019:08:17:00AM
Z100011	05/10/2019:08:17:00AM
Z100003	05/11/2019:08:17:00AM
Z100010	05/12/2019:08:17:00AM
Z100011	05/13/2019:08:17:00AM
Z100001	05/14/2019:08:17:00AM
Z100012	05/15/2019:08:17:00AM
Z100004	05/16/2019:08:17:00AM
Z100009	05/17/2019:08:17:00AM
Z100007	05/18/2019:08:17:00AM
Z100005	05/19/2019:08:17:00AM
Z100003	05/20/2019:08:17:00AM
Z100004	05/21/2019:08:17:00AM
Z100009	05/22/2019:08:17:00AM
Z100006	05/23/2019:08:17:00AM
Z100006	05/24/2019:08:17:00AM
Z100003	05/25/2019:08:17:00AM
Z100007	05/26/2019:08:17:00AM
Z100003	05/27/2019:08:17:00AM
Z100010	05/28/2019:08:17:00AM
Z100007	05/29/2019:08:17:00AM
Z100004	05/30/2019:08:17:00AM
Z100006	05/31/2019:08:17:00AM
Z100013	06/01/2019:08:17:00AM
Z100000	06/02/2019:08:17:00AM
Z100000	06/03/2019:08:17:00AM
Z100001	06/04/2019:08:17:00AM
Z100012	06/05/2019:08:17:00AM
Z100008	06/06/2019:08:17:00AM
Z100003	06/07/2019:08:17:00AM
Z100011	06/08/2019:08:17:00AM
Z100003	06/09/2019:08:17:00AM
Z100009	06/10/2019:08:17:00AM
Z100007	06/11/2019:08:17:00AM
Z100006	06/12/2019:08:17:00AM
Z100001	06/13/2019:08:17:00AM
Z100011	06/14/2019:08:17:00AM
Z100003	06/15/2019:08:17:00AM
Z100005	06/16/2019:08:17:00AM
Z100010	06/17/2019:08:17:00AM
Z100003	06/18/2019:08:17:00AM
Z100013	06/19/2019:08:17:00AM
Z100007	06/20/2019:08:17:00AM
Z100009	06/21/2019:08:17:00AM
Z100010	06/22/2019:08:17:00AM
Z100008	06/23/2019:08:17:00AM
Z100011	06/24/2019:08:17:00AM
Z100006	06/25/2019:08:17:00AM
Z100000	06/26/2019:08:17:00AM
Z100000	06/27/2019:08:17:00AM
Z100013	06/28/2019:08:17:00AM
Z100009	06/29/2019:08:17:00AM
Z100010	06/30/2019:08:17:00AM
Z100012	07/01/2019:08:17:00AM
Z100013	07/02/2019:08:17:00AM
Z100001	07/03/2019:08:17:00AM
Z100003	07/04/2019:08:17:00AM
Z100000	07/05/2019:08:17:00AM
Z100008	07/06/2019:08:17:00AM
Z100005	07/07/2019:08:17:00AM
Z100008	07/08/2019:08:17:00AM
Z100002	07/09/2019:08:17:00AM
Z100005	07/10/2019:08:17:00AM
Z100003	07/11/2019:08:17:00AM
Z100003	07/12/2019:08:17:00AM
Z100006	07/13/2019:08:17:00AM
Z100012	07/14/2019:08:17:00AM
Z100005	07/15/2019:08:17:00AM
Z100004	07/16/2019:08:17:00AM
Z100005	07/17/2019:08:17:00AM
Z100002	07/18/2019:08:17:00AM
Z100000	07/19/2019:08:17:00AM
Z100005	07/20/2019:08:17:00AM
Z100011	07/21/2019:08:17:00AM
Z100002	07/22/2019:08:17:00AM
Z100008	07/23/2019:08:17:00AM
Z100009	07/24/2019:08:17:00AM
Z100011	07/25/2019:08:17:00AM
Z100013	07/26/2019:08:17:00AM
Z100001	07/27/2019:08:17:00AM
Z100007	07/28/2019:08:17:00AM
Z100010	07/29/2019:08:17:00AM
Z100005	07/30/2019:08:17:00AM
Z100002	07/31/2019:08:17:00AM
Z100011	08/01/2019:08:17:00AM
Z100012	08/02/2019:08:17:00AM
Z100005	08/03/2019:08:17:00AM
Z100003	08/04/2019:08:17:00AM
Z100007	08/05/2019:08:17:00AM
Z100002	08/06/2019:08:17:00AM
Z100001	08/07/2019:08:17:00AM
Z100003	08/08/2019:08:17:00AM
Z100007	08/09/2019:08:17:00AM
Z100004	08/10/2019:08:17:00AM
Z100012	08/11/2019:08:17:00AM
Z100004	08/12/2019:08:17:00AM
Z100005	08/13/2019:08:17:00AM
Z100012	08/14/2019:08:17:00AM
Z100009	08/15/2019:08:17:00AM
Z100005	08/16/2019:08:17:00AM
Z100009	08/17/2019:08:17:00AM
Z100004	08/18/2019:08:17:00AM
Z100013	08/19/2019:08:17:00AM
Z100009	08/20/2019:08:17:00AM
Z100006	08/21/2019:08:17:00AM
Z100012	08/22/2019:08:17:00AM
Z100006	08/23/2019:08:17:00AM
Z100012	08/24/2019:08:17:00AM
Z100008	08/25/2019:08:17:00AM
Z100001	08/26/2019:08:17:00AM
Z100005	08/27/2019:08:17:00AM
Z100007	08/28/2019:08:17:00AM
Z100003	08/29/2019:08:17:00AM
Z100013	08/30/2019:08:17:00AM
Z100007	08/31/2019:08:17:00AM
Z100000	09/01/2019:08:17:00AM
Z100004	09/02/2019:08:17:00AM
Z100008	09/03/2019:08:17:00AM
Z100010	09/04/2019:08:17:00AM
Z100008	09/05/2019:08:17:00AM
Z100001	09/06/2019:08:17:00AM
Z100010	09/07/2019:08:17:00AM
Z100009	09/08/2019:08:17:00AM
Z100000	09/09/2019:08:17:00AM
Z100011	09/10/2019:08:17:00AM
Z100001	09/11/2019:08:17:00AM
Z100008	09/12/2019:08:17:00AM
Z100004	09/13/2019:08:17:00AM
Z100009	09/14/2019:08:17:00AM
Z100004	09/15/2019:08:17:00AM
Z100008	09/16/2019:08:17:00AM
Z100012	09/17/2019:08:17:00AM
Z100002	09/18/2019:08:17:00AM
Z100007	09/19/2019:08:17:00AM
Z100005	09/20/2019:08:17:00AM
Z100008	09/21/2019:08:17:00AM
Z100010	09/22/2019:08:17:00AM
;
run;

proc print data=records;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 17 Jun 2021 22:25:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748757#M235180</guid>
      <dc:creator>PharmlyDoc</dc:creator>
      <dc:date>2021-06-17T22:25:28Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748798#M235210</link>
      <description>&lt;P&gt;Can anyone confirm if the following code works for solving logins that occurred in previous 30 days per user?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table records2 AS
select * 
from records
where (datepart(login_datetime) between '01JAN2019'd and '31Dec2020'd)  ;
quit;

data records3;
set records2;
date_30_days_before = intnx('day',datepart(login_datetime),-30,'B') ;
format  date_30_days_before DATE9.;
run;

proc print data=records3;
run;

proc sql;
    create table consolidate_logins as
    select userid,
           login_datetime,
           date_30_days_before,
           count(*) as logins
   from records3
   group by userid,
            login_datetime,
            date_30_days_before;
quit;

proc sql;
    create table logins_month as
    select a.userid,
           a.login_datetime format=mmddyy10.,
           a.logins as logins_that_day,
           sum(b.logins) as logins_last_30_days /*Number of logins on, or within 30 days of, the login_date*/
    from consolidate_logins as a
    left join consolidate_logins as b
    on a.userid = b.userid
    and b.value &amp;lt;= a.login_datetime 
    and b.value &amp;gt;= a.date_30_days_before
    group by a.userid,
             a.login_datetime,
             a.logins
    ;
quit;



&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 17 Jun 2021 23:39:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748798#M235210</guid>
      <dc:creator>PharmlyDoc</dc:creator>
      <dc:date>2021-06-17T23:39:01Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748813#M235222</link>
      <description>&lt;P&gt;I couldn't check your code because I don't know what b.value is. This might get your answer? Do &amp;gt;= 4 in having to get 4 consecutive months or more.&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql number;
	create table have as select a.userid, a.login_datetime from records2 a
	join records2 b
	on a.userid=b.userid
	and b.login_datetime &amp;lt;= a.login_datetime
	and datepart(b.login_datetime) &amp;gt;= datepart(a.login_datetime)-30
	order by 1,2;
	
quit;

data temp;
	set have;
	format date date9.;
	date=datepart(login_datetime);
	if lag(userid)=userid and intck('month',lag(date),date)=1 then do;
	lag_n=_n_-1;
	set have point=lag_n; output;
	set have point=_n_; output;
		end;
run;

proc sql;
	create table want as 
	select count(distinct userid) as count from
	(select * from (select distinct * from temp)
		group by userid
		having count(*) &amp;gt;=4);
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 18 Jun 2021 02:56:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748813#M235222</guid>
      <dc:creator>tarheel13</dc:creator>
      <dc:date>2021-06-18T02:56:32Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748838#M235236</link>
      <description>&lt;P&gt;Sorry, but my sql-knowledge is limited, so i can't debug your code.&lt;/P&gt;
&lt;P&gt;I am not sure, that i understood your requirement fully, so here's a two-step solution. You may want to comment-out the subsetting-if and the keep-statement to inspect what the step does:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* count the number of logins per year/month and user */
proc summary data=work.records nway;
   class userid login_datetime;
   format login_datetime dtmonyy7.;
   output out=work.counted(drop=_type_ rename=(_freq_ = count));
run;


data work.want;
   set work.counted;
   by userid;
   
   retain consec_month last_login;
   
   login_date = intnx('month', datepart(login_datetime), 0, 'b');
   
   if first.userid then do;
      consec_month = 1;
   end;
   else do; 
      if intck('month', last_login, login_date) = 1 then do;
         consec_month = consec_month + 1;
      end;
      else do;
         consec_month = 0;
      end;   
   end;
   
   last_login = login_date;
   
   if consec_month = 4;
   
   keep userid;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 18 Jun 2021 09:05:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748838#M235236</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2021-06-18T09:05:27Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748856#M235246</link>
      <description>&lt;P&gt;So, I want to create a new table that lists the userids that had at least 1 login/month for at least 4 consecutive months.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jun 2021 11:16:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748856#M235246</guid>
      <dc:creator>PharmlyDoc</dc:creator>
      <dc:date>2021-06-18T11:16:12Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748857#M235247</link>
      <description>&lt;P&gt;Did you even try running my queries and examining the results?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jun 2021 11:27:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748857#M235247</guid>
      <dc:creator>tarheel13</dc:creator>
      <dc:date>2021-06-18T11:27:56Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748865#M235249</link>
      <description>&lt;P&gt;It looks like you solved what I was looking for -&amp;nbsp;&lt;SPAN&gt;I wanted to create a new table that lists the userids that had ≥ 1 login/month for ≥ 4 consecutive months.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Thanks!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Now I have another table of userids called all_records (with just one observation per user) which contains users who activated their online account, and therefore includes the users from the previous table "records", and users who did not activate their account.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;How do I create a new column in the table "all_records" that flags the userids produced from your code (work.want) (who met the criteria for having ≥ 1 login/month for ≥ 4 consecutive months)?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Your code produced this for work.want:&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;Obs userid&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Z100001&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Z100003&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Z100005&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Z100006&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Z100007&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Z100009&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Z100010&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Z100011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Z100012&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* activated_account yes=1 no=0  */
data all_records;
input @1 userid $7.
      @8 activated_account;
datalines;
Z100000	1
Z100001	1
Z100002	1
Z100003	1
Z100004	1
Z100005	1
Z100006	1
Z100007	1
Z100008	1
Z100009	1
Z100010	1
Z100011	1
Z100012	1
Z100013	1
Z100014	0
Z100015	0
Z100016	0
Z100017	0
Z100018	0
Z100019	0
Z100020	0
;
run;

proc print data=all_records;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jun 2021 11:54:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748865#M235249</guid>
      <dc:creator>PharmlyDoc</dc:creator>
      <dc:date>2021-06-18T11:54:07Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748866#M235250</link>
      <description>&lt;P&gt;Yes, I used your code and it produced 14.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(The code that I used I copied from&amp;nbsp;&lt;A href="https://stackoverflow.com/questions/42763358/sas-sql-find-3-or-more-occurences-within-a-given-timeframe" target="_blank"&gt;https://stackoverflow.com/questions/42763358/sas-sql-find-3-or-more-occurences-within-a-given-timeframe&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;and it didn't produce what I was looking for. )&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jun 2021 12:02:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748866#M235250</guid>
      <dc:creator>PharmlyDoc</dc:creator>
      <dc:date>2021-06-18T12:02:41Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748867#M235251</link>
      <description>&lt;P&gt;Weird, stackoverflow is usually pretty reliable. I usually post here if I get stuck. Where do you work that you use this type of data? I only know clinical data.&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jun 2021 12:04:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748867#M235251</guid>
      <dc:creator>tarheel13</dc:creator>
      <dc:date>2021-06-18T12:04:27Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748868#M235252</link>
      <description>&lt;P&gt;I think I would probably just do data step for that? So you can sort them both by userid and imagine allrecords is the leftmost table and want is the right table. By using the in flags, we can keep everything in the left dataset by using if a. Just write another if statement for if a and b to flag records that are in both datasets. I think that's what you're asking?&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=want;
by userid;
run;

proc sort data=allrecords;
by userid;
run;

data combine;
merge allrecords(in=a) want(in=b);
if a;
if a and b then flag=1;
else flag=0;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 18 Jun 2021 12:09:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748868#M235252</guid>
      <dc:creator>tarheel13</dc:creator>
      <dc:date>2021-06-18T12:09:14Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748874#M235256</link>
      <description>&lt;P&gt;Don't forget by userid in the merge.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jun 2021 12:57:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748874#M235256</guid>
      <dc:creator>tarheel13</dc:creator>
      <dc:date>2021-06-18T12:57:22Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748880#M235258</link>
      <description>&lt;P&gt;Bingo!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=want;
by userid;
run;

proc sort data=allrecords;
by userid;
run;

data combine;
merge allrecords(in=a) want(in=b);
&lt;STRONG&gt;by userid;&lt;/STRONG&gt;
if a;
if a and b then flag=1;
else flag=0;
run;

proc print data=combine;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 18 Jun 2021 13:23:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748880#M235258</guid>
      <dc:creator>PharmlyDoc</dc:creator>
      <dc:date>2021-06-18T13:23:03Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748882#M235260</link>
      <description>&lt;P&gt;Here is an example of inexact matching using SQL. Could have used logic like this to find the logins within 30 days. I have SQL notes if anyone wants them. Personally, I am a huge fan of SQL and find it advantageous to know it. I think I got the logic wrong in my query but this would have been how to do it. It is nice to be able to think of more than one solution to programming problems.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;TITLE 'Example of a match on inexact values
PROC SQL; SELECT a.pt_id, a.admdate LABEL="Admission", b.admdate LABEL="Re-admission within 35 days"
FROM ex.admits AS a, ex.admits AS b
WHERE a.pt_id = b.pt_id AND /* match on patient ID */ a.admdate &amp;lt; b.admdate AND /* only if admit before re-admit */ b.admdate &amp;lt;= (a.admdate+35); /* only if re-admit w/in 35 days */&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 18 Jun 2021 13:25:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748882#M235260</guid>
      <dc:creator>tarheel13</dc:creator>
      <dc:date>2021-06-18T13:25:20Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748884#M235262</link>
      <description>&lt;P&gt;I'm a pharmacist by background but I work in healthcare research.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jun 2021 13:25:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748884#M235262</guid>
      <dc:creator>PharmlyDoc</dc:creator>
      <dc:date>2021-06-18T13:25:30Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748987#M235296</link>
      <description>&lt;P&gt;I'm actually not getting what I believe to be correct from this.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The tables that I'm using have thousands of users. And for some reason when I merge the want table with the allrecords table, the resulting combine table has more distinct userids than the want table, which doesn't make sense. The numbers should be the same or less.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jun 2021 20:40:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748987#M235296</guid>
      <dc:creator>PharmlyDoc</dc:creator>
      <dc:date>2021-06-18T20:40:28Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748989#M235298</link>
      <description>&lt;P&gt;Well, the code I gave you was assuming that want and all_records are both at 1 row per userid. Are they both not at user-id level?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jun 2021 20:42:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/748989#M235298</guid>
      <dc:creator>tarheel13</dc:creator>
      <dc:date>2021-06-18T20:42:32Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate number of logins over days and select records with at least 1 login per month?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/749007#M235307</link>
      <description>&lt;P&gt;The final derived want dataset has one userid per row (no duplicate user id's), likewise all_records has 1 row per user id (no duplicates). Both of these tables have multiple columns but each table has only one column that contains userid's.&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jun 2021 23:39:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-number-of-logins-over-days-and-select-records-with-at/m-p/749007#M235307</guid>
      <dc:creator>PharmlyDoc</dc:creator>
      <dc:date>2021-06-18T23:39:54Z</dc:date>
    </item>
  </channel>
</rss>

