<?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: PROC SQL different values within a BY GROUP and Calculate percentages of the different records in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-different-values-within-a-BY-GROUP-and-Calculate/m-p/112281#M31079</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Since you didn't post what output you need.&lt;/P&gt;&lt;P&gt;So it is hard to make sure what your intention is .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data have;
input ID_NO TRANS_DATE :mmddyy10. PRODUCTS $ NAME $ STATE $;
datalines;
255 3/2/2012 BED JOHN NY
255 3/2/2012 PILLOW JOHN NY
255 3/2/2012 MATTRES JOHN NY
468 9/12/2012 BED MIKE California
468 9/12/2012 PILLOW MIKE MARYLAND
468 9/12/2012 MATTRES MIKE California
137 6/25/2012 BED JIM Michigan
137 6/25/2012 PILLOW JIM MARYLAND
137 6/25/2012 MATTRES TOM Michigan
137 6/25/2012 MATTRES JIM Michigan
;
run;
proc sql;
title "Pct deviate name";
select b.*, n_name/n as pctName format=percent8.2 
 from (select id_no,trans_date,count(*) as n from have group by id_no,trans_date) as a,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (select id_no,trans_date,name,count(*) as n_name from have group by id_no, trans_date,name) as b
&amp;nbsp; where a.id_no=b.id_no and a.trans_date=b.trans_date ;


title "Pct deviate state";
select b.*, n_STATE/n as pctSTATE format=percent8.2 
 from (select id_no,trans_date,count(*) as n from have group by id_no,trans_date) as a,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (select id_no,trans_date,STATE,count(*) as n_STATE from have group by id_no, trans_date,STATE) as b
&amp;nbsp; where a.id_no=b.id_no and a.trans_date=b.trans_date ;
quit;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 14 May 2012 02:56:30 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2012-05-14T02:56:30Z</dc:date>
    <item>
      <title>PROC SQL different values within a BY GROUP and Calculate percentages of the different records</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-different-values-within-a-BY-GROUP-and-Calculate/m-p/112278#M31076</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;Hi all,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;I have a data set with ID_NO , TRANSACTION_DATE , PRODUCT, NAME and STATE the By GROUP variables are ID_NO &amp;amp; TRANS_DATE&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;Although I would expect NAME and STATE to be the &lt;SPAN style="text-decoration: underline;"&gt;&lt;SPAN style="color: #575757; text-decoration: underline;"&gt;same&lt;/SPAN&gt; across each BY GROUP&lt;/SPAN&gt;, this is not the case.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" width="419"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="xl64" height="20" width="64"&gt;ID_NO&lt;/TD&gt;&lt;TD class="xl64" width="101"&gt;TRANS_DATE&lt;/TD&gt;&lt;TD class="xl64" width="87"&gt;PRODUCTS&lt;/TD&gt;&lt;TD class="xl64" width="87"&gt;NAME&lt;/TD&gt;&lt;TD class="xl64" width="80"&gt;STATE&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;255&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;3/2/2012&lt;/TD&gt;&lt;TD&gt;BED&lt;/TD&gt;&lt;TD&gt;JOHN&lt;/TD&gt;&lt;TD&gt;NY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;255&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;3/2/2012&lt;/TD&gt;&lt;TD&gt;PILLOW&lt;/TD&gt;&lt;TD&gt;JOHN&lt;/TD&gt;&lt;TD&gt;NY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;255&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;3/2/2012&lt;/TD&gt;&lt;TD&gt;MATTRES&lt;/TD&gt;&lt;TD&gt;JOHN&lt;/TD&gt;&lt;TD&gt;NY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;468&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;9/12/2012&lt;/TD&gt;&lt;TD&gt;BED&lt;/TD&gt;&lt;TD&gt;MIKE&lt;/TD&gt;&lt;TD&gt;California&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;468&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;9/12/2012&lt;/TD&gt;&lt;TD&gt;PILLOW&lt;/TD&gt;&lt;TD&gt;MIKE&lt;/TD&gt;&lt;TD class="xl64"&gt;MARYLAND&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;468&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;9/12/2012&lt;/TD&gt;&lt;TD&gt;MATTRES&lt;/TD&gt;&lt;TD&gt;MIKE&lt;/TD&gt;&lt;TD&gt;California&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;137&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;6/25/2012&lt;/TD&gt;&lt;TD&gt;BED&lt;/TD&gt;&lt;TD&gt;JIM&lt;/TD&gt;&lt;TD&gt;Michigan&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;137&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;6/25/2012&lt;/TD&gt;&lt;TD&gt;PILLOW&lt;/TD&gt;&lt;TD&gt;JIM&lt;/TD&gt;&lt;TD class="xl64"&gt;MARYLAND&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;137&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;6/25/2012&lt;/TD&gt;&lt;TD&gt;MATTRES&lt;/TD&gt;&lt;TD class="xl64"&gt;TOM&lt;/TD&gt;&lt;TD&gt;Michigan&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;137&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;6/25/2012&lt;/TD&gt;&lt;TD&gt;MATTRES&lt;/TD&gt;&lt;TD&gt;JIM&lt;/TD&gt;&lt;TD&gt;Michigan&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;I would like to run a PROC SQL that would identify these BY GROUP that deviate and at the same time to provide percentages of how many of these BY GROUP are diffferent &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;a)&amp;nbsp; in NAME&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;b) in STATE&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;Any suggestions would be much appreciated.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;Kind regBY GROUP&amp;nbsp; rards&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;Nikos&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2012 16:48:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-different-values-within-a-BY-GROUP-and-Calculate/m-p/112278#M31076</guid>
      <dc:creator>Nikos</dc:creator>
      <dc:date>2012-05-11T16:48:50Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL different values within a BY GROUP and Calculate percentages of the different records</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-different-values-within-a-BY-GROUP-and-Calculate/m-p/112279#M31077</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I suggest :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;input ID_NO TRANS_DATE :mmddyy10. PRODUCTS $ NAME $ STATE $;&lt;BR /&gt;datalines;&lt;BR /&gt;255 3/2/2012 BED JOHN NY &lt;BR /&gt;255 3/2/2012 PILLOW JOHN NY &lt;BR /&gt;255 3/2/2012 MATTRES JOHN NY &lt;BR /&gt;468 9/12/2012 BED MIKE California &lt;BR /&gt;468 9/12/2012 PILLOW MIKE MARYLAND &lt;BR /&gt;468 9/12/2012 MATTRES MIKE California &lt;BR /&gt;137 6/25/2012 BED JIM Michigan &lt;BR /&gt;137 6/25/2012 PILLOW JIM MARYLAND &lt;BR /&gt;137 6/25/2012 MATTRES TOM Michigan &lt;BR /&gt;137 6/25/2012 MATTRES JIM Michigan &lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;title "Pct deviate name";&lt;BR /&gt;select sum(n&amp;gt;1)/count(n) as pctName format=percent8.2 from&lt;BR /&gt;(select count(distinct name) as n from have group by id_no, trans_date);&lt;BR /&gt;title "Pct deviate state";&lt;BR /&gt;select sum(n&amp;gt;1)/count(n) as pctState format=percent8.2 from&lt;BR /&gt;(select count(distinct state) as n from have group by id_no, trans_date);&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Add UPCASE() function to name or state if you do not care about differences in case.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2012 17:37:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-different-values-within-a-BY-GROUP-and-Calculate/m-p/112279#M31077</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2012-05-11T17:37:34Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL different values within a BY GROUP and Calculate percentages of the different records</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-different-values-within-a-BY-GROUP-and-Calculate/m-p/112280#M31078</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt; select a.id_no,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.trans_date,&lt;/P&gt;&lt;P&gt;&amp;nbsp; case&lt;/P&gt;&lt;P&gt;&amp;nbsp; when count(distinct a.name) &amp;gt; 1 then 1&lt;/P&gt;&lt;P&gt;&amp;nbsp; else 0&lt;/P&gt;&lt;P&gt;&amp;nbsp; end as name_deviate,&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 - max(b.name_count) / count(*) as name_deviate_percent format=percent.,&lt;/P&gt;&lt;P&gt;&amp;nbsp; case&lt;/P&gt;&lt;P&gt;&amp;nbsp; when count(distinct a.state) &amp;gt; 1 then 1&lt;/P&gt;&lt;P&gt;&amp;nbsp; else 0&lt;/P&gt;&lt;P&gt;&amp;nbsp; end as state_deviate,&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 - max(c.state_count) / count(*) as state_deviate_percent format=percent.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; from foo a&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; left outer join ( select id_no,trans_date,name,count(*) as name_count from foo group by id_no,trans_date,name ) b on a.id_no=b.id_no and a.trans_date=b.trans_date and a.name=b.name&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; left outer join ( select id_no,trans_date,state,count(*) as state_count from foo group by id_no,trans_date,state ) c on a.id_no=c.id_no and a.trans_date=c.trans_date and a.state=c.state&lt;/P&gt;&lt;P&gt;&amp;nbsp; group by a.id_no,a.trans_date;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P align="center"&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;TABLE cellspacing="0" class="Table"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD colspan="1"&gt;id_no&lt;/TD&gt;&lt;TD colspan="1"&gt;trans_date&lt;/TD&gt;&lt;TD colspan="1"&gt;name_deviate&lt;/TD&gt;&lt;TD colspan="1"&gt;name_deviate_percent&lt;/TD&gt;&lt;TD colspan="1"&gt;state_deviate&lt;/TD&gt;&lt;TD colspan="1"&gt;state_deviate_percent&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;137&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;25JUN2012&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;1&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;25%&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;1&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;25%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;255&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;02MAR2012&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;0&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;0%&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;0&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;0%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;468&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;12SEP2012&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;0&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;0%&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;1&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;33%&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2012 18:09:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-different-values-within-a-BY-GROUP-and-Calculate/m-p/112280#M31078</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2012-05-11T18:09:17Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL different values within a BY GROUP and Calculate percentages of the different records</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-different-values-within-a-BY-GROUP-and-Calculate/m-p/112281#M31079</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Since you didn't post what output you need.&lt;/P&gt;&lt;P&gt;So it is hard to make sure what your intention is .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data have;
input ID_NO TRANS_DATE :mmddyy10. PRODUCTS $ NAME $ STATE $;
datalines;
255 3/2/2012 BED JOHN NY
255 3/2/2012 PILLOW JOHN NY
255 3/2/2012 MATTRES JOHN NY
468 9/12/2012 BED MIKE California
468 9/12/2012 PILLOW MIKE MARYLAND
468 9/12/2012 MATTRES MIKE California
137 6/25/2012 BED JIM Michigan
137 6/25/2012 PILLOW JIM MARYLAND
137 6/25/2012 MATTRES TOM Michigan
137 6/25/2012 MATTRES JIM Michigan
;
run;
proc sql;
title "Pct deviate name";
select b.*, n_name/n as pctName format=percent8.2 
 from (select id_no,trans_date,count(*) as n from have group by id_no,trans_date) as a,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (select id_no,trans_date,name,count(*) as n_name from have group by id_no, trans_date,name) as b
&amp;nbsp; where a.id_no=b.id_no and a.trans_date=b.trans_date ;


title "Pct deviate state";
select b.*, n_STATE/n as pctSTATE format=percent8.2 
 from (select id_no,trans_date,count(*) as n from have group by id_no,trans_date) as a,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (select id_no,trans_date,STATE,count(*) as n_STATE from have group by id_no, trans_date,STATE) as b
&amp;nbsp; where a.id_no=b.id_no and a.trans_date=b.trans_date ;
quit;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 May 2012 02:56:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-different-values-within-a-BY-GROUP-and-Calculate/m-p/112281#M31079</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-05-14T02:56:30Z</dc:date>
    </item>
  </channel>
</rss>

