<?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: Finding row totals and percentages using SQL in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Finding-row-totals-and-percentages-using-SQL/m-p/667968#M200136</link>
    <description>&lt;P&gt;Use the CALCULATED keyword:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data envt;
input id$ 1-4 a1 5-6 a2 7-8 a3 10-12;
datalines;
a11 4 2  62
a12 7 3  9
a13 8 11 5
a14 2 6  9
a15 3 3  4
;

proc sql;
create table try as
  select
    id, a1, a2, a3,
    sum(a1,a2,a3) as a_total,
    a1/calculated a_total as a1_pct format=percent8.2,
    a2/calculated a_total as a2_pct format=percent8.2,
    a3/calculated a_total as a3_pct format=percent8.2
  from envt
;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 09 Jul 2020 06:50:14 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2020-07-09T06:50:14Z</dc:date>
    <item>
      <title>Finding row totals and percentages using SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-row-totals-and-percentages-using-SQL/m-p/667965#M200133</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;I would appreciate if someone can help me with the SAS code to solve this problem using SQL:&lt;/P&gt;
&lt;P&gt;For each id, I am summing up row values ie. a1+a2+a3 to obtain a new variable a_total&lt;/P&gt;
&lt;P&gt;Next I calculate the row percent to the nearest whole number separately for a1(a1_pct), a2(a2_pct) and a3(a3_pct).&lt;/P&gt;
&lt;P&gt;My SAS code and log are as follows and SAS results are attached.&lt;/P&gt;
&lt;P&gt;I don't know the code to find the percentages within the SQL procedure so I had to output the results and create a new data step to find the percentages; though the results are right, the process is quite long .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Kindly&amp;nbsp; help me to find the percentages within SQL.&lt;/P&gt;
&lt;P&gt;Thanks in advance.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ak.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;BR /&gt;data envt;&lt;BR /&gt;input id$ 1-4 a1 5-6 a2 7-8 a3 10-12;&lt;BR /&gt;datalines;&lt;BR /&gt;a11	4 2	 62&lt;BR /&gt;a12	7 3	 9&lt;BR /&gt;a13	8 11 5&lt;BR /&gt;a14 2 6  9&lt;BR /&gt;a15 3 3  4&lt;BR /&gt;;&lt;BR /&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt;create table try as&lt;BR /&gt;select id, a1, a2, a3,&lt;BR /&gt;a1+a2+a3 as a_total &lt;BR /&gt;&lt;BR /&gt;from envt;&lt;BR /&gt;quit;&lt;BR /&gt; &lt;BR /&gt;proc print data=try; run;&lt;BR /&gt; &lt;BR /&gt; data try2; set try; &lt;BR /&gt; a1_pct=(a1/a_total) *100;&lt;BR /&gt; a2_pct=(a2/a_total)*100;&lt;BR /&gt; a3_pct=(a3/a_total)*100;&lt;BR /&gt; run;&lt;BR /&gt;proc print data=try2;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;
&lt;DIV&gt;
&lt;DIV class="sasSource"&gt;1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;72&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV class="sasSource"&gt;73 data envt;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;74 input id$ 1-4 a1 5-6 a2 7-8 a3 10-12;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;75 datalines;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="sasLogNote1_1594274342919" class="sasNote"&gt;NOTE: The data set WORK.ENVT has 5 observations and 4 variables.&lt;/DIV&gt;
&lt;DIV id="sasLogNote2_1594274342919" class="sasNote"&gt;NOTE: DATA statement used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.01 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.02 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;81 ;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;82&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;83 proc sql;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;84 create table try as&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;85 select id, a1, a2, a3,&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;86 a1+a2+a3 as a_total&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;87&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;88 from envt;&lt;/DIV&gt;
&lt;DIV id="sasLogNote3_1594274342919" class="sasNote"&gt;NOTE: Table WORK.TRY created, with 5 rows and 5 columns.&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;89 quit;&lt;/DIV&gt;
&lt;DIV id="sasLogNote4_1594274342919" class="sasNote"&gt;NOTE: PROCEDURE SQL used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.01 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.02 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;90&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;91 proc print data=try; run;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="sasLogNote5_1594274342919" class="sasNote"&gt;NOTE: There were 5 observations read from the data set WORK.TRY.&lt;/DIV&gt;
&lt;DIV id="sasLogNote6_1594274342919" class="sasNote"&gt;NOTE: PROCEDURE PRINT used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.21 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.22 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;92&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;93 data try2; set try;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;94 a1_pct=(a1/a_total) *100;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;95 a2_pct=(a2/a_total)*100;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;96 a3_pct=(a3/a_total)*100;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;97 run;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="sasLogNote7_1594274342919" class="sasNote"&gt;NOTE: There were 5 observations read from the data set WORK.TRY.&lt;/DIV&gt;
&lt;DIV id="sasLogNote8_1594274342919" class="sasNote"&gt;NOTE: The data set WORK.TRY2 has 5 observations and 8 variables.&lt;/DIV&gt;
&lt;DIV id="sasLogNote9_1594274342919" class="sasNote"&gt;NOTE: DATA statement used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.01 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.02 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;98 proc print data=try2;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;99 run;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="sasLogNote10_1594274342919" class="sasNote"&gt;NOTE: There were 5 observations read from the data set WORK.TRY2.&lt;/DIV&gt;
&lt;DIV id="sasLogNote11_1594274342919" class="sasNote"&gt;NOTE: PROCEDURE PRINT used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.11 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.11 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;100&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;101 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV class="sasSource"&gt;113&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;PRE id="pre_sasLog_1111" class="sasLog"&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 09 Jul 2020 06:36:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-row-totals-and-percentages-using-SQL/m-p/667965#M200133</guid>
      <dc:creator>ak2011</dc:creator>
      <dc:date>2020-07-09T06:36:11Z</dc:date>
    </item>
    <item>
      <title>Re: Finding row totals and percentages using SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-row-totals-and-percentages-using-SQL/m-p/667968#M200136</link>
      <description>&lt;P&gt;Use the CALCULATED keyword:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data envt;
input id$ 1-4 a1 5-6 a2 7-8 a3 10-12;
datalines;
a11 4 2  62
a12 7 3  9
a13 8 11 5
a14 2 6  9
a15 3 3  4
;

proc sql;
create table try as
  select
    id, a1, a2, a3,
    sum(a1,a2,a3) as a_total,
    a1/calculated a_total as a1_pct format=percent8.2,
    a2/calculated a_total as a2_pct format=percent8.2,
    a3/calculated a_total as a3_pct format=percent8.2
  from envt
;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 09 Jul 2020 06:50:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-row-totals-and-percentages-using-SQL/m-p/667968#M200136</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-07-09T06:50:14Z</dc:date>
    </item>
    <item>
      <title>Re: Finding row totals and percentages using SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-row-totals-and-percentages-using-SQL/m-p/667970#M200138</link>
      <description>Thanks very much! The code works!</description>
      <pubDate>Thu, 09 Jul 2020 07:10:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-row-totals-and-percentages-using-SQL/m-p/667970#M200138</guid>
      <dc:creator>ak2011</dc:creator>
      <dc:date>2020-07-09T07:10:32Z</dc:date>
    </item>
    <item>
      <title>Re: Finding row totals and percentages using SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-row-totals-and-percentages-using-SQL/m-p/668080#M200183</link>
      <description>You know there are PROCS that will do this automatically for you?</description>
      <pubDate>Thu, 09 Jul 2020 15:51:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-row-totals-and-percentages-using-SQL/m-p/668080#M200183</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2020-07-09T15:51:37Z</dc:date>
    </item>
  </channel>
</rss>

