BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
AgentA
Obsidian | Level 7

Hi Guys,

I need to find out Total Number of days each user has worked, Kindly tell me how i can do it using BASE SAS & PROC SQL.

 


Waiting for a response. 

Thank you 🙂

1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

@Jagadishkatam the SQL can be simplified

 

select username, count (distinct date_worked) as unique_days

View solution in original post

11 REPLIES 11
Reeza
Super User

See the examples here:

http://support.sas.com/kb/25/279.html

 

Or I would recommend PROC MEANS 

 


@AgentA wrote:

Hi Guys,

I need to find out Total Number of days each user has worked, Kindly tell me how i can do it using BASE SAS & PROC SQL.

 


Waiting for a response. 

Thank you 🙂


 

AgentA
Obsidian | Level 7
Any way to do it from Base Sas? using first.id/last.id.
I need the exact code to do it.

Thanks
Jagadishkatam
Amethyst | Level 16
proc sort data=have nodupkey;
by Username Day_Worked;
run;

data want;
set have;
by Username Day_Worked;
retain count;
if first.username then count=1;
else count=count+1;
if last.username;
run;
Thanks,
Jag
AgentA
Obsidian | Level 7

This one is not working since there are sames dates the user have worked, so if i apply a nodupkey then the same dates get deleted. So i do not get the accurate result. 

The proc sql works , if its possible to do it by base sas then pl let me know. 

Thank you for your time Jagdish. 

Reeza
Super User

@AgentA wrote:

This one is not working since there are sames dates the user have worked, so if i apply a nodupkey then the same dates get deleted. So i do not get the accurate result. 

The proc sql works , if its possible to do it by base sas then pl let me know. 

Thank you for your time Jagdish. 


No. If you need number of days worked and you have duplicate dates that does not mean they worked two days. It may mean two shifts but not two days. Based on your question, as stated, these answers are correct. 

 

If you need the the number of entries rather than number of days it's a different question, and I would recommend PROC FREQ instead. Use the correct tools for the job. I suspect this is likely homework which is why you need a specific method. 

Jagadishkatam
Amethyst | Level 16

Alternatively by proc sql

 

proc sql;
create table want as select distinct count(username) as count,username from (select distinct username,Day_Worked from have) group by username;
quit;
Thanks,
Jag
Reeza
Super User

@Jagadishkatam the SQL can be simplified

 

select username, count (distinct date_worked) as unique_days
AgentA
Obsidian | Level 7
Hi,
I mean to say
If Nitin worked on 2 May 2014
Also Abhishek worked on 2 May 2014 then if i use nodupkep on days_worked then i will not get accurate results. Though proc sql is the best way to solve it , just wanted to know if it can be done using base sas.
Thank you so much for your time.
Reeza
Super User

@AgentA wrote:
Hi,
I mean to say
If Nitin worked on 2 May 2014
Also Abhishek worked on 2 May 2014 then if i use nodupkep on days_worked then i will not get accurate results. Though proc sql is the best way to solve it , just wanted to know if it can be done using base sas.
Thank you so much for your time.

That's not correct again. Don't make assumptions, check the data and results. 

 

The NODUPKEY was used with the BY variables of PERSON + DAYS_WORKED so a duplicate day will not be erased unless it has multiple entries for the same person. 

 

You can solve it with BASE SAS, but BASE SAS doesn't have a definition that you're seeming to use. PROC SQL is in BASE SAS, are you trying to say a DATA STEP? Because even then, there are better BASE SAS methods to use than a data step for a summary procedure. 

 

 

 

 

 

AgentA
Obsidian | Level 7
Okay ! Got it . Thank you. Will check again all the things.

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 11 replies
  • 1969 views
  • 6 likes
  • 3 in conversation