<?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 automatic rank variable? in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62286#M17716</link>
    <description>I don't know either but PROC SUMMARY will do it.&lt;BR /&gt;
&lt;BR /&gt;
[pre]&lt;BR /&gt;
proc sql;&lt;BR /&gt;
create table a1 as&lt;BR /&gt;
select region, &lt;BR /&gt;
sum(sales) as tot_sales&lt;BR /&gt;
from sashelp.shoes&lt;BR /&gt;
group by region&lt;BR /&gt;
order by tot_sales desc&lt;BR /&gt;
; quit;&lt;BR /&gt;
data a2;&lt;BR /&gt;
set a1;&lt;BR /&gt;
rank = _n_;&lt;BR /&gt;
run;&lt;BR /&gt;
&lt;BR /&gt;
proc print;&lt;BR /&gt;
   run;&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
proc summary data=sashelp.shoes nway;&lt;BR /&gt;
   class region / order=freq descending;&lt;BR /&gt;
   freq sales;&lt;BR /&gt;
   output out=ranks / levels;&lt;BR /&gt;
   run;&lt;BR /&gt;
proc print;&lt;BR /&gt;
   run;&lt;BR /&gt;
proc compare base=a2 compare=ranks;&lt;BR /&gt;
   var region tot_sales rank;&lt;BR /&gt;
   with region _freq_ _level_;&lt;BR /&gt;
   run;&lt;BR /&gt;
[/pre]</description>
    <pubDate>Thu, 05 May 2011 16:26:32 GMT</pubDate>
    <dc:creator>data_null__</dc:creator>
    <dc:date>2011-05-05T16:26:32Z</dc:date>
    <item>
      <title>PROC SQL automatic rank variable?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62282#M17712</link>
      <description>My SAS code:&lt;BR /&gt;
&lt;BR /&gt;
proc sql;&lt;BR /&gt;
  create table a1 as&lt;BR /&gt;
  select region, &lt;BR /&gt;
           sum(sales) as tot_sales&lt;BR /&gt;
  from sashelp.shoes&lt;BR /&gt;
  group by region&lt;BR /&gt;
  order by tot_sales desc&lt;BR /&gt;
; quit;&lt;BR /&gt;
&lt;BR /&gt;
data a2;&lt;BR /&gt;
  set a1;&lt;BR /&gt;
  rank = _n_;&lt;BR /&gt;
run;&lt;BR /&gt;
&lt;BR /&gt;
I want to know if it is possible to eliminate the second data step and let the first proc sql create rank variable.</description>
      <pubDate>Thu, 05 May 2011 00:04:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62282#M17712</guid>
      <dc:creator>MarcTC</dc:creator>
      <dc:date>2011-05-05T00:04:31Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL automatic rank variable?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62283#M17713</link>
      <description>Hi &lt;BR /&gt;
Gud one i dont know how to do in Proc sql; &lt;BR /&gt;
&lt;BR /&gt;
Base sas Code goes here...&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
DATA SHOES(KEEP =REGION TOT_SALES);&lt;BR /&gt;
&lt;BR /&gt;
SET SHOES;&lt;BR /&gt;
BY REGION;&lt;BR /&gt;
IF FIRST.REGION THEN TOT_SALES=0;&lt;BR /&gt;
TOT_SALES+SALES;&lt;BR /&gt;
IF LAST.REGION THEN OUTPUT;&lt;BR /&gt;
RANK=_N_;&lt;BR /&gt;
RUN;</description>
      <pubDate>Thu, 05 May 2011 14:54:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62283#M17713</guid>
      <dc:creator>sss</dc:creator>
      <dc:date>2011-05-05T14:54:18Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL automatic rank variable?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62284#M17714</link>
      <description>Hello SSS,&lt;BR /&gt;
&lt;BR /&gt;
It is more like this:&lt;BR /&gt;
[pre]&lt;BR /&gt;
data Shoes (KEEP =REGION TOT_SALES rank);&lt;BR /&gt;
  set sashelp.shoes;&lt;BR /&gt;
  if FIRST.region then do; TOT_SALES=0; Rank+1; end;&lt;BR /&gt;
  TOT_SALES+SALES;&lt;BR /&gt;
  if LAST.region then output;&lt;BR /&gt;
  by region;&lt;BR /&gt;
run; &lt;BR /&gt;
[/pre]&lt;BR /&gt;
Sincerely,&lt;BR /&gt;
SPR

Message was edited by: SPR</description>
      <pubDate>Thu, 05 May 2011 15:17:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62284#M17714</guid>
      <dc:creator>SPR</dc:creator>
      <dc:date>2011-05-05T15:17:45Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL automatic rank variable?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62285#M17715</link>
      <description>Hi SPR,&lt;BR /&gt;
&lt;BR /&gt;
it would be more likely&lt;BR /&gt;
&lt;BR /&gt;
PROC SORT DATA=SASHELP.SHOES OUT=SHOES;&lt;BR /&gt;
by  decending REGION;&lt;BR /&gt;
RUN;&lt;BR /&gt;
&lt;BR /&gt;
data Shoes (KEEP =REGION TOT_SALES rank);&lt;BR /&gt;
  set shoes;&lt;BR /&gt;
  if FIRST.region then do; TOT_SALES=0; Rank+1; end;&lt;BR /&gt;
  TOT_SALES+SALES;&lt;BR /&gt;
  if LAST.region then output;&lt;BR /&gt;
  by descending region;&lt;BR /&gt;
run;</description>
      <pubDate>Thu, 05 May 2011 15:44:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62285#M17715</guid>
      <dc:creator>sss</dc:creator>
      <dc:date>2011-05-05T15:44:26Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL automatic rank variable?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62286#M17716</link>
      <description>I don't know either but PROC SUMMARY will do it.&lt;BR /&gt;
&lt;BR /&gt;
[pre]&lt;BR /&gt;
proc sql;&lt;BR /&gt;
create table a1 as&lt;BR /&gt;
select region, &lt;BR /&gt;
sum(sales) as tot_sales&lt;BR /&gt;
from sashelp.shoes&lt;BR /&gt;
group by region&lt;BR /&gt;
order by tot_sales desc&lt;BR /&gt;
; quit;&lt;BR /&gt;
data a2;&lt;BR /&gt;
set a1;&lt;BR /&gt;
rank = _n_;&lt;BR /&gt;
run;&lt;BR /&gt;
&lt;BR /&gt;
proc print;&lt;BR /&gt;
   run;&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
proc summary data=sashelp.shoes nway;&lt;BR /&gt;
   class region / order=freq descending;&lt;BR /&gt;
   freq sales;&lt;BR /&gt;
   output out=ranks / levels;&lt;BR /&gt;
   run;&lt;BR /&gt;
proc print;&lt;BR /&gt;
   run;&lt;BR /&gt;
proc compare base=a2 compare=ranks;&lt;BR /&gt;
   var region tot_sales rank;&lt;BR /&gt;
   with region _freq_ _level_;&lt;BR /&gt;
   run;&lt;BR /&gt;
[/pre]</description>
      <pubDate>Thu, 05 May 2011 16:26:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62286#M17716</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2011-05-05T16:26:32Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL automatic rank variable?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62287#M17717</link>
      <description>Marc,&lt;BR /&gt;
&lt;BR /&gt;
If you can use an undocumented function (that comes with the risk that the feature may not exist in future releases), you can definitely do it in a 2nd proc sql step and can probably combine the two.  E.g.:&lt;BR /&gt;
[pre]&lt;BR /&gt;
&lt;BR /&gt;
proc sql noprint;&lt;BR /&gt;
  create table a1 as&lt;BR /&gt;
    select distinct region, &lt;BR /&gt;
           sum(sales) as tot_sales&lt;BR /&gt;
      from sashelp.shoes&lt;BR /&gt;
        group by region&lt;BR /&gt;
          order by tot_sales desc&lt;BR /&gt;
  ;&lt;BR /&gt;
  create table want as&lt;BR /&gt;
    select *,&lt;BR /&gt;
      monotonic() as rank &lt;BR /&gt;
        from a1&lt;BR /&gt;
          order by tot_sales desc&lt;BR /&gt;
  ;&lt;BR /&gt;
quit;&lt;BR /&gt;
[/pre]&lt;BR /&gt;
HTH,&lt;BR /&gt;
Art</description>
      <pubDate>Thu, 05 May 2011 17:44:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62287#M17717</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-05-05T17:44:29Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL automatic rank variable?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62288#M17718</link>
      <description>None of the above solution is a single SQL.&lt;BR /&gt;
Question is, why is that important? Is this you real summarized data huge, and you want to avoid more than one pass of data? In that case, one could use a view approach for the SQL group by step.&lt;BR /&gt;
And for ranking, why not use a procedure which was created to do - ranking...?&lt;BR /&gt;
In my eyes, it is the simplest (and supported) code:&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
proc rank data=work.a1 out=a2 descending;&lt;BR /&gt;
	var tot_sales;&lt;BR /&gt;
        ranks rank_sales;&lt;BR /&gt;
run;&lt;BR /&gt;
&lt;BR /&gt;
/Linus

Oh, missed the ranks statement...&lt;BR /&gt;
&lt;BR /&gt;
    &lt;BR /&gt;
Message was edited by: Linus H</description>
      <pubDate>Fri, 06 May 2011 06:56:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-SQL-automatic-rank-variable/m-p/62288#M17718</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2011-05-06T06:56:37Z</dc:date>
    </item>
  </channel>
</rss>

